精华内容
下载资源
问答
  • 前几天在做提交表单验证的时候,就发现自己的表单提交没有效果, onsubmit根本调用到check()函数,将函数换个名称或者调用其他的都可以实现 一脸懵逼的情况下,发现了设置的name属性值的其中一个和我们的函数名重复...

    前几天在做提交表单验证的时候,就发现自己的表单提交没有效果,

    onsubmit根本调用不到check()函数,将函数换个名称或者调用其他的都可以实现

    一脸懵逼的情况下,发现了设置的name属性值的其中一个和我们的函数名重复了

    我们学习js的时候,明确的讲过,函数是js中的一等公民,所有当函数和变量名重复的时候,变量会被覆盖

    但是这和我们的name属性值又有什么关系呢?

    在网上找了一些资料,才大致有些许了解,但是还不是很通透

    当我们的onsubmit = "return check()" 的时候,浏览器不能识别该check是我们的name属性值,还是全局里面的一个函数,也就是作用域的问题,浏览器不知道自己访问的是谁的check,所以要告诉浏览器,我们访问的是全局里面的check函数

    也就是  onsubmit = "return window.check()"  这样就会调用我们的全局里面的check()

    全部代码如下;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
        <link rel="stylesheet" href="css01.css">
    </head>
    <body>
    <div id="load_div">
        <form action="#" method="post" onsubmit="return window.check();">
            <table>
                <tr>
                    <td colspan="3">
                        <font>会员注册</font>&nbsp;USER&nbsp;REGISTER
                    </td>
                </tr>
                <tr>
                    <td>用户名</td>
                    <td colspan="2"><input type="text" name="username" placeholder="请输入用户名" id="usernameid"></td>
                </tr>
                <tr>
                    <td>密码</td>
                    <td colspan="2"><input type="password" name="password" placeholder="请输入密码" id="passwordid"></td>
                </tr>
                <tr>
                    <td>确认密码</td>
                    <td colspan="2"><input type="password" name="repassword" placeholder="请输确认密码" id="repasswordid"></td>
                </tr>
                <tr>
                    <td>Email</td>
                    <td colspan="2"><input type="text" name="email" placeholder="请输入邮箱" id="emailid"></td>
                </tr>
                <tr>
                    <td>姓名</td>
                    <td colspan="2"><input type="text" name="realname" placeholder="请输入用姓名" id="realnameid"></td>
                </tr>
                <tr>
                    <td>性别</td>
                    <td colspan="2">
                        <input type="radio" name="sex">男
                        <input type="radio" name="sex">女
                    </td>
                </tr>
                <tr>
                    <td>出生日期</td>
                    <td colspan="2"><input type="date" name="birthday"></td>
                </tr>
                <tr>
                    <td>验证码</td>
                    <td><input type="text" name="check" id="testid"></td>
                    <td><img src="img/checkcode.jpg" alt=""></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="注册" class="btn"></td>
                    <td></td>
                </tr>
    
            </table>
    
            <script type="text/javascript">
                // debugger;
                // var btn = document.querySelector('.btn')
                // btn.onclick = function(){
                //     check()
                // }
                function check(){
                    // alert(1);
                    var uesername = document.getElementById('usernameid').value;
                    if (uesername == '') {
                        alert("用户名不能为空");
                        return false;
                    }
                    var password = document.getElementById('passwordid').value;
                    if (password == '') {
                        alert("密码不能为空");
                        return false;
                    }
                    var repassword = document.getElementById('repasswordid').value;
                    if (repassword !== password) {
                        alert("两次输入密码不一致,请重新输入");
                        return false;
                    }
                    var email = document.getElementById('emailid').value;
                    if (email == "") {
                        alert("邮箱不能为空");
                        return false;
                    }
                    var realname = document.getElementById('realnameid').value;
                    if (realname == '') {
                        alert("姓名不能为空");
                        return false;
                    }
                    var test = document.getElementById('testid').value;
                    if (test == '') {
                        alert("验证码不能为空");
                        return false;
                    }
                }
    
            </script>
        </form>
    </div>
    </body>
    
    </html>

     

    展开全文
  • 提交form表单数据到服务器端(如果表单元素设置name属性,是否能把数据提交到服务器端呢?) 在如下案例中,是把表单数据提交到服务器端servlet中 注意: 1.只有设置了 name 属性的表单元素才能在提交表单时...

    提交form表单数据到服务器端(如果表单中的元素不设置name属性,是否能把数据提交到服务器端呢?)

    在如下案例中,是把表单数据提交到服务器端的servlet中

    注意:

    1.只有设置了 name 属性的表单元素才能在提交表单时传递它们的值

    2.虽然复选框设置了 name属性,但是如果复选框不选中,是不会提交到服务器端的,只有选中了的复选框,才会提交到服务器端

    直接po截图和代码

    下面是CheckFormDemo.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>验证表单的案例</title>
    <link rel="stylesheet" type="text/css" href="../css/body.css"/>
    <script type="text/javascript" src="jsCheckDateDemo.js"></script>
    </head>
    <body>
    <h1>验证表单的案例</h1>
    <form name="form1" id="f1" action="../TestForm" method="get">
    姓名:<input type="text" name="userName" id="uName">
    <br/>
    年龄:<input type="text" name="age" id="uAge">
    <br/>
    密码:<input type="password" name="pwd" id="myPwd">
    <br/>
    重复密码:<input type="password" name="repeatPwd" id="myRepeatPwd">
    <br/>
    <!-- 
    虽然复选框设置了 name属性,但是如果复选框不选中,是不会提交到服务器端的,只
    有选中了的复选框,才会提交到服务器端
     -->
    爱好:<input type="checkbox" name="hobby" id="myHobby" value="football">足球
    <input type="checkbox" name="hobby" id="myHobby" value="badminton">羽毛球
    <input type="checkbox" name="hobby" id="myHobby" value="basketball">篮球
    <input type="checkbox" name="hobby" id="myHobby" value="billiards">台球
    <br/>
    备注:<textarea rows="3" cols="30" id="remarks"></textarea>
    <br/>
    <!-- 只有设置了 name 属性的表单元素才能在提交表单时传递它们的值 -->
    测试字段:<input type="text" id="test" value="本文本框故意不设置name属性,看服务器端能不能接收到">
    <br/>
    <!-- 
    onclick="checkForm();"这句话中的;分号也可以省略不写,但是如果有多行js代
    码的话,那就要在每行js代码后面加上;分号,最后一行js代码后面可以不写;分号,也可以写上;分号
     -->
    <input type="button" value="js验证表单" onclick="checkForm();">
    <input type="submit" value="提交到servlet">
    </form>
    </body>
    </html>

    下面是名字叫TestForm的servlet

    package com.servlet;
    
    import java.io.IOException;
    import java.util.Enumeration;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 测试从客户端中提交到服务器端中的参数有哪些?
     */
    @WebServlet("/TestForm")
    public class TestForm extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Enumeration<String> parameterNames = request.getParameterNames();
    		while (parameterNames.hasMoreElements()) {
    			String parameterName =  parameterNames.nextElement();
    			System.out.println("参数名:" + parameterName);
    		}
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }

     

    展开全文
  • 问题出现背景:当时在实际项目中,我是没注意到我有两个input标签的name属性同名了,于是在提交的时候总是报Can not find action ,并提示没定义这个文件路径,也就是form中action匹配到struts.xml文件中定义的逻辑...

    问题出现背景

    当时在实际项目中,我是没注意到我有两个input标签的name属性变量同名了,于是在提交的时候总是报Can not find action ,并提示没定义这个文件路径,也就是form中action匹配不到struts.xml文件中定义的逻辑视图路径!

    解决问题步骤

    刚开始我很看到那个错误的第一反应就是更改路径,让其匹配成功,谁知道各种路径方式都试过了,而且还和之前的有form标签的jsp文件进行对照,发觉我的路径问题没问题,提交还是报同样的错误,这个时候内心是非常烦躁的,我于是只能用出杀手锏了,一个页面也就那么多行代码,我就先只留form表单标签,并在后台相对应的action方法中直接给return success,然后提交,它是通过的!然后往中间一步步取出隐藏的块代码!再试的过程中,你还别说,有重大发现,于是就发现我的两个input标签的name属性变量名称相同,当我改完之后,问题解决!

    错误分析

    我们都知道,往往name属性再提交的时候,都是以一个变量或对象中某个字段变量来提交的,之后action(Controller里有此对象字段变量或变量的getter和setter方法)获取值。当我唯独以变量的方式去提交的时候,获取的过程出现问题,它堆栈追踪就报获取不到路径问题!在form提交的时候,相同的两个变量名称各自换一下变成唯一,jsp就可以提交了,然后我到我后台action,发现有定义原先那个相同的变量名,并且设置了 getter和setter方法;于是我又试着用对象的两个相同字段变量测试了下,发现是提交通过的(而且我这个对象在action里面也是有getter和setter方法的),这时候引发我想对源码的分析,想知道到底底层源码在form提交之后,其页面的属性值是怎样去被action页面的getter和setter方法获取的!问题的出现和底层源码setter和getter具体实现过程是怎样的一个关系!

    源码分析

    针对上面的问题,接下来就是源码的解剖了,(说到这里来句题外话,其实程序员做到最后,跟医生差不多,解剖知悉原理,应用于临床更加有经验,哈哈),言归正传!其实问题的根源就是:对象和变量getter和setter的区别

    大家知道,内省是 Java 语言对 Bean 类属性、事件的一种处理方法(也就是说给定一个javabean对象,我们就可以得到/调用它的所有的get/set方法)。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需要了解这个规则,这些 API 存放于包 java.beans 中。然而,我们单个属性去设置getter和setter的话,那么提交的时候,相当于同时setter两次,这时肯定会出错了,但是对象就不同了,查看源码和资料知道,通过类 Introspector 来获取某个对象的 BeanInfo 信息,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后我们就可以通过反射机制来调用这些方法。如果对象的name相同,但是它在action是以类的setter和getter,而且先获取类在通过类Introspector来获取类中属性信息,如果有此类属性字段就获取,无此类属性字段就不获取,所以真相解开!

    总结:在stutrs2开发中jsp的设计,name属性值最好是对象.属性格式!好处理,规范化!

    展开全文
  • 写爬虫时会遇到提交表单的问题,一般先构造data,然后利用post方式进行提交表单。一般data的数据类型为字典,但当遇到多个数据项的属性名字重复时,则能够使用字典了,因为字典中的键是能够重复的。对于这个问题...

    写爬虫时会遇到提交表单的问题,一般先构造data,然后利用post方式进行提交表单。一般data的数据类型为字典,但当遇到多个数据项的属性名字重复时,则不能够使用字典了,因为字典中的键是不能够重复的。对于这个问题的解决可以使用,列表+元组的形式进行data数据的构造。如下:

    data=[('data_name','value'),('data_name','value'),('data_name','value')...]


    展开全文
  • 在struts工程中,如果前台提交的form表单时报了异常,No object in the CompoundRoot has a publicly accessible property named属性名称,原因是:工程结构devMode设为了true,form中input name属性会在后台...
  • <input name="" type="button" value="提交" onclick=" tijiao()" /> <input name="" type="reset" value="重置" />   您输入信息为:          ...
  • form表单name的作用

    2020-09-11 18:36:18
    注释:只有设置了 name 属性的表单元素才能在提交表单时传递它们值。 简单说就是你在前端页面想使用form表单传递值时候,必须要把name的值写成你传递变量名称一样。不然能传参 eg: <form action=...
  • 工作中遇到了个问题,前端提交的form表单中的input标签的name属性不固定,并且提交的参数个数也固定,在controller中想要获取表单数据使用对象接收是现实的,因为name有上百种并且后期也许增加,这样我们可以...
  • 程序开发中,必可少会使用到form表单,以前只是在前端开发时简单使用,对它的属性不甚了解,最近在后端学习中,不断接触到它的属性,现记录一二. action action规定了提交表单时发送表单数据目的地,也即将数据发到...
  • 这个标签在form表单内,也有name属性,但是在后台就是获取不了这个标签的值,而其他的文本框、复选框都可以获取到,这可就奇怪了! 几经周折,终于找到了原因,原来我在提交表单的时候,name = "phone"这个标签...
  • 当使用jquery中submit()提交表单时,怎么都提交不了,要注意表单提交按钮id和name属性是否submit,如果是就不能正常提交。
  • 比如 由于在js中可以直接通过 form.* (*为元素的...如果此时你想在js 中用 form.submit() 或 form.reset() 来提交 或 重置 表单的话,那么就已经可能了。 因为原生的这两个方法已经被你的元素覆盖了。
  • 最近在写小程序,发现了一些细节性问题,在这里做一个记录,和大家一起学习。...这是我picker选择器,就细说了,中间view是用来回显,.name是我对象集合里一个属性,你们可以随便点,想要...
  • JSP Form表单input元素提交

    千次阅读 2016-09-21 10:29:24
    昨天写代码时候发现一个问题,就是form表单提交的时候,其子元素input有没提交成功,检查了name属性,是正常提交的时候输入框里也是有值。后来想了想,可能是元素设置了disabled属性问题。但是把...
  • form 表单提交后,使页面跳转

    千次阅读 2019-03-20 15:07:36
    form 表单提交数据,往往会刷新页面,数据提交后会...将 form target 属性指向 iframe name 属性,这样就实现了刷新页面form提交。 示例: <form action="url" enctype="multipart/form-data" target...
  • 仔细检查字段,用是form表单序列化ajax传值,name属性没有问题,断点调试发现后台字段取值是空值。问了同事才知道,select框传值之前,disabled属性值要设置成false往后台传递,才能取到值。  设置属性...
  • 提交form表单时,碰到一个奇怪问题。执行 form.action = "xxx",是提示“对象支持此属性或方法”错误alert(form.action) 打印出[Object],郁闷很久没有找到原因。起先以为浏览器问题,重启后问题依旧。后来参考...
  • 问题描述:一个登陆页面,添加BootstrapValidator表单验证之后,输入格式验证正确,但点击登陆后没有...name属性能为submit,改一下就好了。(具体原因我也不是很清楚,欢迎小伙伴来交流一下~)修改之后: 登录
  • 简单地来说,成功控件就是:每个表单控件都应该有一个name属性对于一些特殊情况,成功控件还有以下规定:1. 控件能是【禁用】状态,即指定【disabled="disabled"】。即:禁用控件将不是成功控件。2. 如果一...
  • 初学web实现一个小功能,通过Id把数据库中数据查出来,并利用...和往常一样给input加了name 准备在servlet中获取id 执行修改以后居然 后来我转为地址栏传参 成功解决问题; 由此得出结论: input标签...
  • 既然是表单元素,那就是随时准备被提交的,但是有时候一些表单元素被设置了一定的属性之后就能够被提交了,下面介绍一下设置了设置哪些属性之后表单元素能够被提交能够被提交: 1 <input type...
  • 6月3日笔记 表单的设计 ...1.get方式:get方式提交时,会将表单的内容附加在URL地址的后面,所以限制了提交内容的长度,超过8192个字符,且具备保密性。 2.post方式:post方式提交时,将表单中的数
  • 1.get方式  get方式提交的话,表单项都保存在http header中,格式是...name2=value2这样字符串。JSP端通过request.getParameter是可以取到值。  2.post方式(enctype为缺省application/x-www-form-urlenco...
  • 在解决博问node.js接受参数时候,发现当form中添加enctype:"multipart/form-data",后台确实获取到数据,于是跑到百度上查了一下,终于明白为什么了,下面转载一下原因吧: 1.get方式get方式提交的话,表单项都...
  • 表单提交登录

    2019-05-06 12:38:05
    隐藏表单数据 <div style="display:none;...值需要用户填写,但提交的表单数据中缺少他们可能会导致登录验证失败,这些隐藏 <input> 有其他一些用途,比如: <input name="_next"&...
  • Spring MVC 有用于表单绑定标签。...Spring MVC Form 标签生成 HTML 很有规律: 元素 id 属性对应 modelAttribute,input 元素 name 属性对应 model 中的属性。但是,有一点需要注意。如果 input 类型...
  • form表单表单提交,formid

    千次阅读 2018-12-29 17:23:13
    1.在使用提交表单时,尽量使用form表单,提交时有event参数,好多参数都可通过event.detail.value(此时,表单的各个元素需要添加name属性,否则这里会打印到)来获取,比较方便,而且可以减少页面变量的使用,...
  • 大多数时候CheckBox取值传到java后台都是通过js取值,ajax传值,今天改一离职同事老代码,那家伙通过表单提交一些列CheckBox设置,没想到是后台死活接收正常,name、value键值对一直能完全接收到,非常诧异...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 329
精华内容 131
关键字:

表单的name属性提交不了