2017-03-06 8 views
0

私は、テキストフィールドを持つチェックボックス隠しdivを持っています。チェックボックスをオンにすると、このテキストフィールドが表示されますが、チェックボックスをオフにすると、テキストフィールドが表示されません。このコード:チェックボックス非表示Divチェックなし

<script type="text/javascript"> 
    $(function() { 

     $("input[name='checkbox1']").click(function() { 

      if ($("#checkyes1").is(":checked")) { 
       $("#dvcheckbox1").show('lainnya'); 

      } else { 

       $("#dvcheckbox1").hide('lainnya'); 
      } 



     }); 
    }); 
</script> 

<div style="margin-left: 29%; margin-top: -2%;"> 
<label for="checkyes1"> 

<input type="checkbox" id="checkyes1" name="checkbox1" value="lainnya" /> 
Lainnya 
</label> 

<div id="dvcheckbox1" style="display: none;"> 
    <?php echo $form->textField($model,'lainnya'); ?> 
</div> 
</div> 

ただし、テキストフィールドに何か値がある場合、このチェックボックスはどのようにチェックされますか?テキストフィールドが表示されます。フォームの更新では、値は表示でしたが、チェックボックスがチェックされています。 Click to show example

+2

あなたの質問は – madalinivascu

+1

あなたのコードが正常に動作するように見えるかは不明です。問題は何ですか? –

+0

フォームの更新では、テキストフィールドの値は表示されましたが、チェックボックスはオフになっています。私はチェックボックスがチェックされてほしい –

答えて

1

代わり.toggle(boolean)方法でchangeイベントに使用します: - より良い

1:ここではいくつかのものがあります

// on page load check of the div contains any text 
$("#dvcheckbox1").toggle(function(){ 
    var $v = $(this).find('input').val(); 
    $("input[name='checkbox1']").prop('checked', $v.trim().length !== 0) 
    return $v.trim().length !== 0; 
});  

$("input[name='checkbox1']").change(function() { 
    $("#dvcheckbox1").toggle(this.checked); 
}); 
+0

ありがとうそれは仕事です。しかし、私の言葉には申し訳ありません。まだ@ジャイを勉強している –

0

私は、チェックボックスがこのように例えば

をチェックされたいですすべての要素がロードされるまで待機するため、ドキュメント準備ができていれば使用できます。

2 - ページが読み込まれたら、$( "#dvcheckbox1")。hide( 'lainnya')の要素を非表示にする必要があります。

3 - 入力のリスナー:テキストは良いアイデアです。テキストボックスが空の場合、チェックボックスを有効にします。

してくださいは、コードの次の部分を見てみましょう:

<div> 
    <label for="checkyes1"> 
    <input type="checkbox" id="checkyes1" name="checkbox1" value="lainnya" /> 
     Lainnya 
    </label> 

    <div id="dvcheckbox1"> 
     <label for="myValuye"/> 
     <input type="text" id="myValue" name="myValue" value=""/> 
    </div> 
</div> 

<script> 
    $(document).ready(function() { 
    $("input[name='checkbox1']").click(function() { 
     // Always use some logs to check what line are you reaching. 
     console.log("Clicked checkbox!!!"); 

     if ($("#checkyes1").is(":checked")) { 
      $("#dvcheckbox1").show('lainnya'); 
     } else { 
      console.log("Value: " + $("#myValue").val()); 
      $("#dvcheckbox1").hide("lainnya"); 
     } 
    }); 

    $("#myValue").bind("change paste keyup", function() { 
     if ($(this).val() == "") { 
      $("#checkyes1").removeAttr("disabled"); 
     } else { 
      $("#checkyes1").attr("disabled", true); 
     } 
    }); 

    // First of all we hide the #dvcheckbox1 
    $("#dvcheckbox1").hide('lainnya'); 
}) 

関連する問題