-2

次のコードがあり、チェックボックスをオフにすると検証メッセージが表示されるようにしたい。

私のコード

jQuery

if($('#TermsAndConditions').is(':checked')) 
{
} else {
    alert('Not checked);
}

意見

<div class="editor-field">
    <%:Html.CheckBox("TermsAndConditions")%> <%: Html.ActionLink("I agree Terms and Conditions", "Terms", "Home")%>
</div>

ただし、フォームをロードするたびに警告メッセージが表示されます。問題を特定するのを手伝ってもらえますか?

4

4 に答える 4

1

これは、ページの上部にスクリプトを配置したために発生します。基本的に、スクリプトはチェックボックスがスコープ内に存在する前にロードされる#TermsAndConditionため、条件に失敗してelseをトリガーし、おそらく望ましくないイベント(フォームの送信やチェックボックスのステータスの更新など)によってもトリガーされません。

チェックボックスのステータスが変更されたときなど、イベントがトリガーされたときにアクションを実行する必要があります。

$("#TermsAndConditions").on("change", function(){
   if($(this).is(':checked')) 
   {
   } else {
       alert("Not checked");
   } 
});

または、フォームが送信されたとき

$("#YourFormId").on("submit", function(e){
   if($("#TermsAndConditions").is(':checked')) 
   {
       // Form will submit
   } else {
       // Form will not submit
       alert("Not checked");
       e.preventDefault();
   } 
});

ここで動作デモを参照してください

于 2013-07-20T11:21:37.423 に答える
0

jquery コードをどこに配置しますか? ページが完全にロードされた後に実行されていますか? $(function(){ .. code .. });おそらく、次のように配置する必要があります。

$(function(){
    if($('#TermsAndConditions').is(':checked')) {

    }
    else {
       alert('Not checked);
    }
});

または@Dukが言ったように、それをバインドしてイベントを送信します。

于 2013-07-20T11:22:14.910 に答える
0
$('#TermsAndConditions').on('change', function () {
    if (this.checked) {

    } else {
        alert('Not checked');

    }
});

またはフォームonsubmitとして希望する他のハンドラー。

デモ

于 2013-07-20T11:25:24.780 に答える
0

イベントの条件がないため、ページの load.usechangeイベント中に発生します

 $(document).ready(function(){
    $('#TermsAndConditions').change(function(){
            if($(this).is(':checked')) {

            }
            else {
               alert('Not checked);
            }
        });
  });
于 2013-07-20T11:26:07.193 に答える