1

フォームの外にあるボタンからのみ送信したい html フォームがあります。JavaScript を使用して検証を行っていますが、JavaScript 関数が成功しない限りフォームを送信したくありません。フォーム内にボタンがある場合、JavaScriptに関係なく常に送信されますが、ユーザーがEnterキーを押したときにフォーム外にある場合、フォームが送信されるだけです。送信する代わりにボタンのjavascriptを実行するように入力するにはどうすればよいですか?

<form name="form1" action=<?$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"]?> method="post">

<input type="text" maxlength="5" size="5" name="frmZip" value="">

<input type="hidden" name="frmLat" value="200">
<input type="hidden" name="frmLng" value="200">

<input type="submit" disabled="disabled" style="display:none" />
</form>
<button type="button" id="GetCoordinates" onclick="doClick();">Find Stores</button>

編集:私の解決策を見つけました。から変えました

</form>
<button type="button" id="GetCoordinates" onclick="doClick();">Find Stores</button>

<input type="button" name="frmSubmit" onclick="doClick();" value="Submit">
</form>

これにより、ボタンがフォームを送信できなくなったため、javascript を介して doClick() で送信しました。

編集 2: これはしばらくは機能しているように見えましたが、Enter キーストロークのキャッチを停止しました。ボタンを次のように更新しました。

<input type="submit" name="frmSubmit" onclick="return doClick();" value="Find Stores">

doClick() では常に false を返します。これにより、すべてが実行されたら、javascript を介してフォームを送信できました。

4

2 に答える 2

2

これは直接の質問には答えませんが、実際にはボタンをそのままにして、フォームの送信時に検証を使用するだけです。

<form onsubmit="return validateForm()">

次に、validateFormメソッドで、検証が成功したかどうかを示す true または false を返します。

ただし、直接の質問に答えるには、送信ボタンで同じアプローチを使用して、フォームが送信されないようにすることもできます。

アップデート

コメントで指摘されているように、目立たない解決策が望ましいことが多いため、次のようにします。

document.getElementById('theForm').onsubmit = function() { return validateForm(); };

于 2013-06-24T23:48:31.397 に答える
0

preventDefault... を追加すると、フォーム内のボタンは入力時にフォームを送信しません。

$("form").submit(function(e) {e.preventDefault();});
于 2013-06-24T23:45:46.180 に答える