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ます。ボタンをクリックする以外の方法でフォームを送信することもできます (たとえば、「Enter」キーを押す、またはコードを介して手続き的に)。
  • .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 に答える