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>

您仍然应该在您的 PHP 控制器上创建验证,以防止用户在他们的浏览器上关闭 javascript。

于 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 回答