2016-09-22 35 views
0

私はチケット購入フォームを持っています。そこにすべてのperonal情報を入力する必要があります。 名前のない空のチケットを購入することもできます。チェックボックスをクリックするだけで、すべての入力フィールドが無効になります。 var inputsDisabled = 0;チェックボックスがオンの場合、入力を無効にする

$("#three").change(function(){ 

     if(inputsDisabled == 0){ 

      $("input[name=fname]").attr("disabled", true); 
      $("input[name=lname]").attr("disabled", true); 
      $("input[name=email]").attr("disabled", true); 
      $("input[name=sponsor]").attr("disabled", true); 
      $("input[name=phone]").attr("disabled", true); 

      inputsDisabled = 1; 
     } 
     else{ 

      $("input[name=fname]").attr("disabled", false); 
      $("input[name=lname]").attr("disabled", false); 
      $("input[name=email]").attr("disabled", false); 
      $("input[name=sponsor]").attr("disabled", false); 
      $("input[name=phone]").attr("disabled", false); 

      inputsDisabled = 0; 
     } 
    }); 

誰かが空のチケットを購入し、「戻る」ブラウザボタンを押すと、このフォームに戻ります。上記のチェックボックスは自動的にチェックされますが、フィールドはもはや無効になりません。私は以下のコードを使用しようとしましたが、それは助けません。

if ("#three".checked) { 
      $("input[name=fname]").attr("disabled", true); 
      $("input[name=lname]").attr("disabled", true); 
      $("input[name=email]").attr("disabled", true); 
      $("input[name=sponsor]").attr("disabled", true); 
      $("input[name=phone]").attr("disabled", true); 
     } 

これを実行する方法はありますか?

+2

をクリックしましたか? – Li357

+1

'$("#3 ")。は(":checked ")'であり、 'checked'は' attr() 'の代わりに 'prop()'を使用しているので、 – Satpal

+0

を実行できます。変更イベントを追加した後、initで実行されます。 – jcubic

答えて

2

私は条件がこの

if($("#three").is(":checked")) 
{ 
    $("input[name=fname]").attr("disabled", true); 
    $("input[name=lname]").attr("disabled", true); 
    $("input[name=email]").attr("disabled", true); 
    $("input[name=sponsor]").attr("disabled", true); 
    $("input[name=phone]").attr("disabled", true); 
} 
1
$("input[name=fname]").attr("disabled", $("#three").is(":checked")); 
$("input[name=lname]").attr("disabled", $("#three").is(":checked")); 
$("input[name=email]").attr("disabled", $("#three").is(":checked")); 
$("input[name=sponsor]").attr("disabled", $("#three").is(":checked")); 
$("input[name=phone]").attr("disabled", $("#three").is(":checked")); 
4

ようにする必要があります場合は、あなたのあなたが.is(":checked").prop("checked")のいずれかを使用する必要がありますし、checkedので、ここでは代わりにattr()

$("input[name=fname], input[name=lname], input[name=email], input[name=sponsor], input[name=phone]") 
    .prop("disabled", $("#three").is(":checked")); 
+1

Upvotedですが、 '$("#three ")。prop(" checked ")'が '.is()'よりも優れていると思います。 –

+0

**「バックブラウザボタン**」の問題を修正していません –

1

のプロパティの使用prop()さだと思いますこの私のビジョン:

ここでの鍵は$(「文書」)である。準備それはバックボタンで問題を修正する必要がありますが、文字列は、プロパティをチェックしていますだと思いますなぜ

var checkbox = $("#three"); 

checkbox.change(checkState); 
$('document').ready(checkState); 

function checkState() { 
    var inputsDisabled = checkbox.is(":checked"); 
    $("input[name=fname]").prop("disabled", inputsDisabled); 
    $("input[name=lname]").prop("disabled", inputsDisabled); 
    $("input[name=email]").prop("disabled", inputsDisabled); 
    $("input[name=sponsor]").prop("disabled", inputsDisabled); 
    $("input[name=phone]").prop("disabled", inputsDisabled); 
} 
関連する問題