2

フォームの送信に検証チェックを追加しましたが、フォームの送信が停止され、フォーム全体がリセットされるという問題があります。return falseフォームの送信を停止し、フォーム全体のリセットを停止する方法を教えてください。ありがとう

function error()
{
   if (!$("#form1 input[name='radio']:checked").val()) {
     alert('Error: Please select any check box!');
     return false;
   }
   else {
     //alert('One of the radio buttons is checked!');
   }
}

<form name="form1" id="form1">
  <input name="Name" type="text" id="name" size="70" />
  <input name="Age" type="text" id="age" size="70" />
  <input type="radio" name="radio" id="A18" value="18" />
  <input type="radio" name="radio" id="A19" value="19" />
  <input type="submit" onclick="error();" />
</form>
4

2 に答える 2

2

submit検証関数でフォームのイベントを処理し、次を返す必要がありfalseます。

$("#form1").submit(error);

ハンドラーから false を返すsubmitと、フォームの送信がキャンセルされ、フォームの要素の現在の状態が維持されます。

于 2013-04-21T13:31:37.723 に答える
2

false関数から戻るだけでなく、次のことを行う必要があります。

<input type="submit" onclick="return error();" />

「onclick」属性の値は、本質的に実際のハンドラー関数の本体として使用されるため、独自のreturnステートメントが必要です。

編集— meagar の答えは良い考えです。ボタンの「クリック」イベントではなく、フォームの「送信」イベントを処理するのが賢明です。彼の例のように jQuery を介してイベント ハンドラーを設定する場合、return必要なのは "error" 関数内の だけです。

于 2013-04-21T13:30:36.557 に答える