2016-09-14 8 views
1

checkboxの値を比較して出力を表示する方法を教えてください。私はjQueryを使っています。選択後、出力は表示されません。最初のクリックのみで表示されます。次に、再度クリックすると、出力は変更されません。以下はチェックボックス - 選択値との比較

jQueryの

$("input:checkbox").on('click', function() { 
     var $box = $(this), 
     $price = $("input[name='price_range']:checked").val(), 
     $nama_pemohon = "<?php echo $nama_pemohon; ?>", 
     $submited_id = <?php echo $submited_id; ?>, 
     $jawatan_pemohon = "<?php echo $jawatan_pemohon; ?>", 
     $jabatan_pemohon = "<?php echo $jabatan_pemohon; ?>", 
     $submited_by = <?php echo $submited_by; ?>, 
     $nama = "<?php echo $nama; ?>", 
     $jawatan = "<?php echo $jawatan; ?>", 
     $jabatan = "<?php echo $jabatan; ?>"; 

     if($price == "< RM 10,000"){ 
      $("#submited_by option").val($submited_by).text($nama); 
      $("#jawatan_pemohon").text($jawatan); 
      $("#jabatan_pemohon").text($jabatan); 
     } else { 
      $("#submited_by option").val($submited_id).text($nama_pemohon); 
      $("#jawatan_pemohon").text($jawatan_pemohon); 
      $("#jabatan_pemohon").text($jabatan_pemohon); 
     } 

}); 

はHTML

<input type="checkbox" name="price_range" value="< RM 10,000" class="checker"> < RM 10,000.00 
<input type="checkbox" name="price_range" value="< RM 200,000" class="checker"> < RM 200,000.00 

<select name="submited_by" id="submited_by"> 
    <option value="<?php echo $submited_by; ?>"><?php echo $nama;?></option> 
</select> 
+0

phpセグメントをいくつかの定数に置き換えた方がより明確になります。 – srnjak

答えて

0

、これまでに書かれた私のコードで私はあなたのjQueryの機能の "グローバル" 変数の外を作成するべきだと思います。

var clicked = false; 
$("input:checkbox").on('click', function() { 
    if(!clicked) { 
     var $box = $(this), 
     $price = $("input[name='price_range']:checked").val(), 
     $nama_pemohon = "<?php echo $nama_pemohon; ?>", 
     $submited_id = <?php echo $submited_id; ?>, 
     $jawatan_pemohon = "<?php echo $jawatan_pemohon; ?>", 
     $jabatan_pemohon = "<?php echo $jabatan_pemohon; ?>", 
     $submited_by = <?php echo $submited_by; ?>, 
     $nama = "<?php echo $nama; ?>", 
     $jawatan = "<?php echo $jawatan; ?>", 
     $jabatan = "<?php echo $jabatan; ?>"; 

     if($price == "< RM 10,000"){ 
      $("#submited_by option").val($submited_by).text($nama); 
      $("#jawatan_pemohon").text($jawatan); 
      $("#jabatan_pemohon").text($jabatan); 
     } else { 
      $("#submited_by option").val($submited_id).text($nama_pemohon); 
      $("#jawatan_pemohon").text($jawatan_pemohon); 
      $("#jabatan_pemohon").text($jabatan_pemohon); 
     } 
     clicked = true; 
    } 
}); 
+0

ありがとう@ r4phG。あなたのものを試しましたが、それでも同じです。 – Amran

1

あなたがthis fiddleで見ることができるように、あなたは、第二のチェックボックスに最初のチェックボックスのすべてのクリックに変化するが、初回のみを取得します。

if($price == "< RM 10,000"){ 
    $("#submited_by option").val($submited_by).text($nama); 
    $("#jawatan_pemohon").text($jawatan); 
    $("#jabatan_pemohon").text($jabatan); 
} else { 
    $("#submited_by option").val($submited_id).text($nama_pemohon); 
    $("#jawatan_pemohon").text($jawatan_pemohon); 
    $("#jabatan_pemohon").text($jabatan_pemohon); 
} 

例:

これが原因で、あなたのロジックである最初のチェックボックスに

  1. クリック - >オプションの変更、それはifに入ってくるので、 "NAMA" へ。
  2. elseに入っているので、チェックボックスをクリック - >オプションが「pemohon」に変わります。

例b:第二のチェックボックスに

  1. クリック - >オプションの変更、それはelseに入ってくるので、 "pemohon" へ。
  2. 再度elseに入るので、もう一度チェックボックスをオンにしてください。 - >オプションは変更されません。
+0

ロジックを変更する必要がありますか、または機能がありませんか? – Amran

+0

あなたのコードから期待するものに依存します。チェックボックスをオフにしたときに値をクリアする必要がある場合は、 'else'の中にクリア値を設定し、' else if'に2番目のチェックボックスの値を設定する必要があります。あなたは確かです、そのチェックボックスは正しいアイデアですか?多分ラジオボタンがあなたのために良いオプションです。 – srnjak

+0

私が 'else($ input):checkbox")。prop( 'checked'、false) 'を' else'文に使用すると、その値はクリアされますか? – Amran

関連する問題