0

だから私は基本的なスクリプトと基本的なフォームでhtmlページをロードしています。ただし、ページが読み込まれると、ユーザーが[はい]または[いいえ]を選択できる2つのラジオボタンがあります。ユーザーがどちらも選択しない場合は、アラートボックスを表示したいと思います。アラートボックスを正常に表示しましたが、ユーザーがアラートボックス内の[OK]ボタンをクリックすると、ユーザーは別のページにリダイレクトされます。ステートメントを追加し、falseを返します。これが起こらないことを期待して。

コードは次のとおりです。

<!-- Javascript radiobutton form validation -->

<script type="text/javascript">

function valForm(form) {

    if(!document.getElementById('splash_false').checked && !document.getElementById('splash_true').checked  ) {
        alert('You either like splash pages or dislike em, choose one ...please');
        return false;
    }
}

</script>

<!-- Javascript radiobutton form validation END -->


</head>

<body>
<img src="pics/DSCN1566-300x225.jpg" alt="" width="640" height="auto"  />
<h1>Hello Javascript redirection.</h1><br />

<p>
<form name="tosplashornottosplash" action="splash-process.php" method="post">
Splash pages are stupid.

<input type="radio" name="splash" id="splash_false" value="false" /> No
<input type="radio" name="splash" id="splash_true" value="true" /> Yes

<input type="submit" name="splashSubmit" onClick="return valForm(tosplashornottosplash)" value="Enter" />
</form>
</p>
4

3 に答える 3

1

フォームのonsubmitコールバックにハンドラーを配置する必要があります

<form onsubmit="return valForm(this)" action="splash-process.php" method="post">

onsubmitハンドラーにfalseを返すと、フォームが投稿されなくなります

于 2013-01-12T22:44:35.540 に答える
1

ボタンのonclick-callbackではなく、フォームのonsubmit-callbackにするようにしてください。そうすれば、戻るfalseとフォームの投稿が停止します。

サイドノート:

コールバックでフォームへの参照を使用していないように見えるため、コールバック関数にフォームを渡す必要はありません。したがって、フォームのonsubmit-attributeから、次のように呼び出すこともできます。

onsubmit="return valForm()"

formそして、コールバックシグネチャの変数を取り除きます。

function valForm() {
   ...
}
于 2013-01-12T22:44:40.067 に答える
1

formonsubmitイベントにバインドする必要があります。

<form onsubmit="return valForm()">

form(関数のパラメーターvalFormが実際に使用されたことも、適切に入力されたこともないことに注意してください。return valForm(tosplashornottosplash)存在しないtosplashornottosplashJavaScript変数を参照しているため、評価されundefinedます。)

ただし、イベントハンドラーは、HTMLマークアップで配線するのではなく、JavaScriptコード自体でバインドすることをお勧めします。

document.getElementById("myform").addEventListener("submit", valForm, false);

formこれは、IDを指定し、要素がDOMにロードされたmyformにこのコードが実行されることを前提としています。これを確実にするには、JavaScriptをページの下部(閉じる直前)に配置するか、のイベントにバインドします。formbodyDOMContentLoadeddocument

古いIEブラウザもサポートするには、が利用できないattachEvent場合に使用する必要addEventListenerがあります。MDNのaddEventListenerに関する記事は、次のようなことを示唆しています。

if (form.addEventListener) {
  form.addEventListener("submit", valForm, false);
} else if (form.attachEvent)  {
  form.attachEvent("onsubmit", valForm);
}

または、 DOMの選択を容易にし(例)、ブラウザー間の互換性の問題を処理するjQueryをスローすることもできます(例)。$("form[name=myform])"$.on('submit', valForm)

于 2013-01-12T22:45:16.423 に答える