1

我有一个表单,其验证函数一行会引发未捕获的异常,但浏览器不会停止执行,而是提交表单

http://jsfiddle.net/yur4U/1/

 function validation(){
   var value = document.forms["myform"]['badInput'].value;//this line throws an exception
   return false;
 }​

<form name='myform' action ="" onsubmit="return validation()" method="POST">
    <input name='myInput' value="testing" type="text"/>
     <input value="submit" type="submit"/>
</form >

上面提供的代码是一个简单的示例,但我可能正在进行一些可能产生异常的计算或转换。处理此问题的一种方法是将其包含在 try catch

function validation(){
   var ret =true;
   try{
       var value = document.forms["myform"]['badInput'].value;
       ......//some condition to make ret=false
   } catch(e){
       ret = false
   }
   return ret;
 }​

但我正在寻找更好的方法来做到这一点?我认为浏览器应该默认处理这个问题,如果 onsubmit 函数抛出异常,规范中是否有提到浏览器应该如何表现?

​</p>

4

1 回答 1

1
var value = document.forms["myform"]['badInput'].value;
//this line throws an exception

因为您的表单中没有“badInput”命名元素。尽管最好使用form.elements["elementName"]甚至更好地使用 JS 框架(如 jQuery/dojo/等)。

如果您仍然需要这条线,您可以检查typeof

if (typeof document.forms["myform"].elements['badInput'] != "undefined")
   ...
于 2012-09-10T16:04:31.240 回答