2

JSを使用して例外を作成したので、ユーザーはhtmlフォームフィールドにのみ数値を入力できます。これはうまく機能していますが、問題は、[送信]ボタンが機能しなくなったことです。例外コードを削除すると、送信ボタンが正常に機能します。どこに問題があるのか​​わかりません。誰か助けてくれませんか?前もって感謝します!

ここに例外があります:

function validateNum(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}


function validate()
{

 if( document.myForm.ic.value == "" ||
           isNaN( document.myForm.ic.value ) ||
           document.myForm.ic.value.length != 12)
   {
     alert( "Please provide your correct IC Number!" );
     document.myForm.ic.focus() ;
     return false;
   }else{
     // Put extra check for data format
     var ret = validateNum();
     if( ret == false )
     {
          return false;
     }
   }

これが私のhtmlフォームアクションです:

<form name="myForm" method="post" action="nonuum_reg.php" onsubmit="return(validate());">

入力フィールドと送信ボタンは次のとおりです。

 <input name="ic" type="text" id="ic" maxlength="12" size="45" onkeypress='validateNum(event)'/>

<input type="submit" value="Apply" />
4

2 に答える 2

4

あなたの質問に対する私のコメントに対する私の説明として、これを試してください:

<form name="myForm" method="post" action="nonuum_reg.php" onsubmit="validate(event);">
    <input name="ic" type="text" id="ic" maxlength="12" size="45" onkeypress='validateNum(event)'/>
    <input type="submit" value="Apply" />
</form>
<script>
    function validateNum(evt) {
        var theEvent = evt;
        var key = theEvent.keyCode || theEvent.which;
        key = String.fromCharCode( key );
        var regex = /[0-9]|\./;

        if( !regex.test(key) ) {
            theEvent.returnValue = false;
            if(theEvent.preventDefault) theEvent.preventDefault();
        }
    }

    function validate(evt){
        if( document.myForm.ic.value == "" || isNaN( document.myForm.ic.value ) || document.myForm.ic.value.length != 12) {
            evt.preventDefault();

            alert( "Please provide your correct IC Number!" );
            document.myForm.ic.focus() ;
            return false;
        } 
    }
</script>

ユーザーがブラウザーで JavaScript をオフにしないようにするには、PHP コントローラーで検証を作成する必要があります。

于 2012-11-25T08:04:25.877 に答える
1

return true を追加してみてください =r else close

...

else{
     // Put extra check for data format
     var ret = validateNum();
     if( ret == false )
     {
          return false;
     }

   return true;
}

...

これは、(同じ問題ではなく同じコード)リンクにも役立つはずです。

于 2012-11-25T07:23:51.207 に答える