2016-09-14 4 views
1

Wie Werte vergleichen und die Ausgabe nach der Auswahl auf checkbox zeigen? Ich verwende jQuery, um es zu tun. Nachdem die Auswahl getroffen wurde, wird die Ausgabe nicht angezeigt. Es wird nur für den ersten Klick angezeigt. Wenn wir dann erneut klicken, wird die Ausgabe nicht geändert. Unten ist mein Code so weit,Kontrollkästchen - Werte von Auswahl vergleichen

geschrieben

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

Es wäre klarer, wenn Sie PHP-Segmente mit einigen Konstanten ersetzt. – srnjak

Antwort

0

Ich glaube, dass Sie eine "globale" Variable außerhalb der jQuery-Funktion erstellen soll.

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

Danke @ r4phG. versuchte dir aber immer noch das selbe. – Amran

1

Wie Sie in this fiddle sehen können, erhalten Sie Änderung auf jedem Klick auf erstem Kontrollkästchen, aber nur erstes Mal auf dem zweite Option.

Dies liegt daran, Ihre Logik in: ein

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

Beispiel:

  1. Klick auf ersten Checkbox -> Option wechselt zu "Nama", weil es in if kommt.
  2. klicken Sie auf ein beliebiges Kontrollkästchen -> Option ändert sich zu "pemohon", weil es in kommt.

Beispiel b:

  1. Klick auf zweite Checkbox -> Option wechselt zu "pemohon", weil es in else kommt.
  2. klicken Sie erneut auf das zweite Kontrollkästchen -> Option ändert sich nicht, denn es kommt wieder in else.
+0

Muss ich die Logik ändern oder fehlt mir eine Funktion? – Amran

+0

Hängt davon ab, was Sie von Ihrem Code erwarten. Wenn Sie beim Deaktivieren des Kontrollkästchens den Wert löschen müssen, sollten Sie einen gelöschten Wert innerhalb von 'else' und einen Wert für das zweite Kontrollkästchen in 'else if' festlegen. Sind Sie sicher, diese Checkbox ist die richtige Idee? Vielleicht Radio-Button ist die bessere Option für Sie. – srnjak

+0

Wenn ich zB: '$ (" input: checkbox "). Prop ('checked', false)' in der 'else' Anweisung verwende, wird der Wert gelöscht? – Amran

Verwandte Themen