0

我有一个JS问题。我的验证似乎正在工作,检查用户输入的有效数字是否不为零,但表单仍在提交。我已经多次看到这个问题被问到,但我找不到适合我的解决方案。任何想法都会很棒。

我的 Javascript

function checkNotZero()
{
    var theNumber = document.getElementById("theNumber").value;
    var str = /^\+?[1-9]\d*$/.test(theNumber);
    if ( str == false ) {
        alert('You have not entered a valid number');
        return false;
    } else {
        document.getElementById('numberCheck').submit();   
    }
}

我的 HTML

<form action="/next.php" method="post" id="numberCheck">
<input type="text" id="theNumber" value="0">
<button id="submitButton" OnClick="checkNotZero();">Add to Basket</button>
</form>
4

2 回答 2

1
  • 使用<input type="submit">提交按钮。
  • 验证form的提交事件,而不是一些onclick。表单可以通过其他方式提交,而不仅仅是单击按钮(例如,按“输入”或通过代码程序)。
  • 更喜欢.addEventListener将事件附加到元素的属性。用于preventDefault()防止表单提交。
于 2013-11-01T22:31:42.017 回答
0

您好,对于上述“验证表单”的要求,应在提交表单时进行 java 脚本验证。遵循以下方法,除非验证正确,否则不会提交表单。

<html>
<head>
<script type="text/javascript">
function checkNotZero()
{
var theNumber = document.getElementById("theNumber").value;
var str = /^\+?[1-9]\d*$/.test(theNumber);
if ( str == false ) {
alert('in');
alert('You have not entered a valid number');
return false;
} else {
    document.getElementById('numberCheck').submit();   
}
}
</script>
</head>
<body>
<form action="/next.php" method="post" id="numberCheck"  onsubmit="return       
checkNotZero()">
<input type="text" id="theNumber" value="0">
 <button id="submitButton">Add to Basket</button>
</form>
</body>
</html> 

唯一的变化是 不要在提交按钮中使用事件。<form action="/next.php" method="post" id="numberCheck"
onsubmit="return checkNotZero()">
onclick

于 2013-11-02T09:16:31.257 回答