表单提交甚至在验证函数抛出Uncaught Exception之后

时间:2012-09-10 15:54:47

标签: javascript forms submit

我有一个表单,在其验证函数中,一行抛出未捕获的异常,但不是停止执行,浏览器提交表单

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函数抛出异常,是否会在规范中的任何地方提到浏览器应该如何表现?

1 个答案:

答案 0 :(得分:1)

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

因为表单中没有“badInput”命名元素。虽然最好使用form.elements["elementName"]或者更好地使用JS框架(比如jQuery / dojo / etc.)。

如果您仍需要此行,可以查看typeof

if (typeof document.forms["myform"].elements['badInput'] != "undefined")
   ...