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 >

上記のコードは単純な例ですが、例外を生成する可能性のある計算または変換を行っている可能性があります。これを処理する 1 つの方法は、それを 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 に答える