2017-10-31 11 views
0

タイプチェックボックスの入力であるmy asp.net core 2.0/mvc6プロジェクトに要素があります。私はちょうどこのチェックボックスをトグルしながら別の隠し要素の値を変更する方法をテストしていたので、それを動作させることができませんでしたので、クリック結果が何であるかを確認するために表示される単純なjqueryを使用しました。入力タイプのチェックボックスで予期しないjavascriptの動作

Htmlの

<div class="col-xs-7 col-sm-8"> 
    <label class="css-input switch switch-sm switch-success"> 
      <input type="checkbox" id="validation-terms" name="validation-terms"><span></span> I agree to all terms 
    </label> 
</div> 
<div class="col-xs-5 col-sm-4"> 
    <div class="font-s13 text-right push-5-t"> 
     <a href="#" data-toggle="modal" data-target="#modal-terms">View Terms</a> 
     </div> 
</div> 
@Html.HiddenFor(m =>m.Terms, new { id="register-terms" }) 

Javascriptを

$用語要素

var $terms = $("#validation-terms"); 
//toggle the slider when terms modal agree button clicked 
     $terms.on('click', function() { 

      if ($terms.is(':checked')) { 
       //$terms.prop('checked', false); 
       //$('#register-terms').val(false); 
       alert("changing to blank"); 
      } else { 
       //$terms.prop('checked', true); 
       //$('#register-terms').val(true); 
       alert("changing to green"); 
      } 

     }); 

呼び出したいものは何でも未確認のスライダー(空白、グレー表示でページがロード、ための変数でありますそれはチェックされた属性を追加しない限り通常の動作です)。 チェックボックス(スライダ)をクリックすると、javascriptで検出されないことが確認され、緑色のメッセージに変わることが示されます。その動作は反対です!最初にクリックすると空白に変わるメッセージが表示され、スライダが緑色に変わり、もう一度クリックするとチェック状態(おそらく)になり、緑色のメッセージに変わり、空白に戻ります。

私はここで何が欠けていますか?

答えて

0

$ termsが初期化されたコードを含めなかったので、$ terms変数が正しく使用されているかどうかはわかりませんが、click関数の中の "this"への参照を使用すると、チェックボックスがクリックされます。問題の理解に役立つかどうかは、下のスニペットを参照してください。あなたが提供したコードに応じて私のために正しいアラートを表示しているようだ:ここで

$(function(){ 
 
    //toggle the slider when terms modal agree button clicked 
 
    $terms = $("#validation-terms"); 
 
    $terms.change(function() { 
 
     //If the current click if checking the box: 
 
     if ($(this).is(':checked')) { 
 
      //$terms.prop('checked', false); 
 
      //$('#register-terms').val(false); 
 
      alert("Checking the checkbox"); 
 
     } else { //If the current click is un-checking the box: 
 
      //$terms.prop('checked', true); 
 
      //$('#register-terms').val(true); 
 
      alert("Unchecking the checkbox"); 
 
     } 
 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="col-xs-7 col-sm-8"> 
 
    <label class="css-input switch switch-sm switch-success"> 
 
      <input type="checkbox" id="validation-terms" name="validation-terms"><span></span> I agree to all terms 
 
    </label> 
 
</div> 
 
<div class="col-xs-5 col-sm-4"> 
 
    <div class="font-s13 text-right push-5-t"> 
 
     <a href="#" data-toggle="modal" data-target="#modal-terms">View Terms</a> 
 
     </div> 
 
</div> 
 
<input type="hidden" id="register-terms" >

は、チェックボックスでどのように機能するかを変更またはイベントをクリックし、基本的である:

$('#checkbox1').change(function() { 
    if($(this).is(":checked")) { 
     //'checked' event code 
    } 
    else { 
     //'unchecked' event code 
    } 
}); 
+0

ことは、チェックボックスのクリック機能の予想される動作です。このより良いデモのためのフィドルでこの質問を参照してください:https://stackoverflow.com/questions/7031226/jquery-checkbox-change-and-click-event – MUlferts

+0

...クリックイベントはできませんチェックされたプロパティを正しくチェックしていないので、変更イベントを使用する必要がありますか?それはあなたが示したリンクから解釈しているものです。 – dinotom

+0

いいえ、両方ともチェックされたプロパティを同じにチェックします。変更/クリックイベントでは、チェックした値に、チェックした値が表示されます。チェックボックスをチェックすると、$(this)の値がチェックされて表示されます。チェックを外すと、checked = falseと表示されます。変更機能は、現在選択されている値を取得します。 – MUlferts

関連する問題