日期:2014-05-16  浏览次数:20373 次

请问这段js程序,检查输入是否非空,为什么没起作用?
JScript code

<script type="text/javascript">
                           function check(){
                                 var x=document.getElementsByName("username").value;
                                 if(x==null || x==""){
                                     alert("Please input username");    
                    return false;
                                 }    
                           }    
</script>
</head>
    
    <body>
               <form action="js.php" method="POST"  onsubmit="return check()">
                          <input type="text" name="username"></input>
                          <input type="submit" name="sub"></input>
               </form>    
    </body>


------解决方案--------------------
因为getElementsByName返回的是集合(哪怕只有一个元素),是无法直接用.value的
这样就可以了
var x = document.getElementsByName("username")[0].value;


------解决方案--------------------
function check(){
var x=document.getElementsByName("username");//x结果是数组
for(i=0;i<x.length;i++){
if(x[i].value==null || x[i].value==""){
alert("Please input username");
return false;

}

 }

------解决方案--------------------
Form 对象的 onsubmit 属性指定了一个事件句柄函数。当用户单击了表单中的 Reset 按钮而提交一个重置时,就会调用这个事件句柄函数。注意,当调用方法Form.submit() 时,该处理器函数不会被调用。

注意后面那句调用方法Form.submit() 时,该处理器函数不会被调用。

根据你的代码,在button中调用form.submit(),这个时候是不会触发form的onsubmit事件的。

以下随便取一
1.把button的type改为submit,不要显示调用form.submit()
2.显示调用form.submit(),在提交前验证form
------解决方案--------------------
JScript code
var ctrip =  document.getElememntsByName("optctr_ip")[0].value;