2016-09-14 4 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 함수의 "글로벌"변수 외부를 작성해야한다고 생각이다. 당신이 this fiddle에서 볼 수 있듯이

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

, 당신은 두 번째 체크 박스에 첫번째 체크 박스에 모든 클릭에 변화가 있지만 처음으로 구매하십시오.

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); 
} 

예 A :

이 때문에 당신의 논리입니다 첫번째 체크 박스에

  1. 클릭 -> 옵션 변경이 if에 오기 때문에, "이름 선택"로 설정합니다.
  2. else에 들어 있기 때문에 -> 옵션이 "pemohon"으로 변경됩니다.

예 B : 두 번째 체크 박스에

  1. 클릭 -> 옵션의 변경은 else로 오기 때문에, "pemohon"로 설정합니다.
  2. else에 다시 오기 때문에 두 번째 확인란을 다시 클릭하십시오 -> 옵션이 변경되지 않습니다.
+0

로직을 변경해야합니까 아니면 기능이 누락 되었습니까? – Amran

+0

코드에서 기대하는 바에 달려 있습니다. 체크 박스를 체크 해제 할 때 값을 지워야한다면, 'else'안에 클리어 된 값을 설정하고 else if에 두번째 체크 박스의 값을 설정해야합니다. 그 확인란이 옳은가요? 라디오 버튼이 더 좋은 옵션 일 수 있습니다. – srnjak

+0

else 문에'$ ("input : checkbox"). prop ('checked', false)'를 사용하면 값을 지울 수 있습니까? – Amran