2016-05-06 12 views
5

私はチェックボックスを持つフォームを持っています。フォームを送信した後に、同じビューにエラーが戻ったときにフォームをチェックしたままにしておきたいと思います。私は値の属性がtrue/falseに設定しようとしているので、チェックボックスをチェックするのを助けることができると聞いた。とにかく、私がクリックしても入力値は "false"のままです。正確にはどうなりますか? 私はノートチェックボックスの値true/false

$("#checkbox1").prop('checked', true); 

使用Checked = trueチェックボックスに

<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false"> 

     <script> 
      $("#checkbox1").is(':checked', function(){ 
       $("#checkbox1").attr('value', 'true'); 
      }); 
     </script> 
+1

私はこの質問で困惑しているが。チェックボックスがオンの場合、値を変更したいと思うようです。しかし、伝統的にチェックボックスの値は変化しません。彼らの状態は、それらがバックエンドに渡されるかどうかを決定する。 – Taplar

+0

チェックボックスを切り替えると、要素のHTMLは実際には変更されません。したがって、 '.getAttribute( 'checked')'を実行すると、初期状態を設定するために 'checked'属性をHTMLに適用しても、何も返されません。この修正は、入力のJSプロパティ( 'checked'ともいう)にアクセスすることです。つまり、チェックボックスの変更イベントのバニラJSハンドラでは、これは何もしません: 'byId(' tgt ')。value = this.getAttribute(' checked '); 'これはテキストをtrueまたはfalseに設定します: 'byId(' tgt ')。value = this.checked; ' – enhzflep

+0

あなたは1ページ目で任意にチェックボックスを選択してサブミットでき、2ページ目でチェック状態を元の状態に維持したいと言っていますか?最初のフォームに? – Taplar

答えて

11

をお試しくださいチェックされているかどうかに応じてチェックボックスをオンにします。私は次の仮定の下で、この答えを投稿するつもりです

$('#checkbox-value').text($('#checkbox1').val()); 
 

 
$("#checkbox1").on('change', function() { 
 
    if ($(this).is(':checked')) { 
 
    $(this).attr('value', 'true'); 
 
    } else { 
 
    $(this).attr('value', 'false'); 
 
    } 
 
    
 
    $('#checkbox-value').text($('#checkbox1').val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 

 
<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false"> 
 

 
<div id="checkbox-value"></div>

+0

'.on( 'change'、'私はまさに必要なものだった – divHelper11

4

をクリックした後に値が真/偽になると思った:私はあなたがチェックボックスでのonclick /のonchangeイベントにしたいかどうかは明らかではないのです。 is(":checked", function(){})は質問に間違っています。

+0

'' true''はブール値と同じことをしますか? –

+0

実際には一重引用符が必要なのかどうかわからない – gavgrif

+0

'true'を使用している間は、期待どおりに動作します。しかし、「偽」のチェックを外して使用したい場合は機能しません。だからブール値を使うのは良いことです。更新しました。ありがとう:) –

1

チェックボックスはJSで本当に奇妙なことがあります。 checked属性が存在するかどうかをチェックすることをお勧めします。 (以前のjQueryのバージョンでは、checkedが「false」に設定されていてもtrueを返すようになりました。)何かがチェックされたら、value属性から値を取得できます。

1

jQuery.is()機能には、.is('selector', function)の署名がありません。

私はあなたがこのような何かをしたいと思います:

 if($("#checkbox1").is(':checked')){ 
      $("#checkbox1").attr('value', 'true'); 
     } 
+0

これを指摘していただきありがとうございます。とにかくそれはまだ私のために働かない。ああ、神なぜxD – divHelper11

2

、私は質問を理解していれば、あなたはの値を変更したいこの

$("#checkbox1").is(':checked', function(){ 
 
    $("#checkbox1").prop('checked', true); 
 
}); 
 
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="acceptRules" class="inline checkbox" id="checkbox1" value="false">

1

は、ここに1つのソリューションです。 1) You (un)selected the checkbox on the first page and submitted the form. 2) Your building the second form and you setting the value="" true/false depending on if the previous one was checked. 3) You want the checkbox to reflect if it was checked or not before.

このような場合は、あなたのような何かを行うことができます。

var $checkbox1 = $('#checkbox1'); 
$checkbox1.prop('checked', $checkbox1.val() === 'true'); 
関連する問題