2010-06-25 7 views
9

Ich habe Kontrollkästchen auf meiner Seite, für die ich ihren Status über Ajax zurück an die Datenbank senden möchte. Ich weiß, wie man jQuery mit ajax benutzt, aber ich weiß nicht, wie man den checked state, sowohl checked als auch unmarked, zusammen mit der ID des checkboxes bekommt, damit ich es an den Server zurücksenden kann.jQuery Ajax checkbox state

Irgendwelche Ideen?

+0

können, können Sie bitte ... –

Antwort

18
if ($("#yourCheckboxID").is(":checked")) { 
    // checkbox is checked 
} else { 
    // checkbox is not checked 
} 

wird die Aufgabe erledigen.

+1

Funktioniert gut! Vielen Dank. – oshirowanen

0

Nun, es ist einfach genug, um die Kontrollkästchen zu finden:

$(':checkbox').whatever() 

Der Trick besteht darin, dass in HTML haben Kontrollkästchen nur einen Wert, der sinnvoll ist, wenn geprüft. Wenn sie nicht überprüft werden, was sagen Sie dem Server?

Nun, wenn Sie eine Konvention haben, um damit zu arbeiten (vielleicht immer "true" wenn geprüft und "false" wenn nicht geprüft), müssen Sie als nächstes entscheiden, wie Sie sie auf Ihren Server bekommen. Sie können die jQuery param Funktion verwenden, um die Liste in einen Parameter-String zu drehen:

var params = $.param($(':checkbox').map(function() { 
    return { name: this.id, value: !!this.checked }; 
})); 

, dass Sie eine Zeichenfolge bereit zu gehefteten auf eine URL oder gesendet, wie Daten über $.ajax gibt.

15

Etwas wie folgt aus:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("input:checkbox").change(function() { 
      if($(this).is(":checked")) { 
       $.ajax({ 
        url: 'on_off.aspx', 
        type: 'POST', 
        data: { strID:$(this).attr("id"), strState:"1" } 
       }); 
      } else { 
       $.ajax({ 
        url: 'on_off.aspx', 
        type: 'POST', 
        data: { strID:$(this).attr("id"), strState:"0" } 
       }); 
      } 
     }); 
    }); 
</script> 
8

Ihre Lösung und die akzeptierte Antwort von Ain Kombination:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    var isChecked = $("input:checkbox").is(":checked") ? 1:0; 
    $.ajax({ 
      url: 'on_off.aspx', 
      type: 'POST', 
      data: { strID:$("input:checkbox").attr("id"), strState:isChecked } 
    });   
    }); 
</script> 
1

zurück in die Änderungsereignis der fusionierten Lösung Hinzufügen. Soll dies jedes Mal ausgelöst werden, wenn die Checkbox geändert wird.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("input:checkbox").change(function() { 
      var isChecked = $("input:checkbox").is(":checked") ? 1:0; 
      $.ajax({ 
       url: 'on_off.aspx', 
       type: 'POST', 
       data: { strID:$("input:checkbox").attr("id"), strState:isChecked } 
      });   
     });   
    }); 
</script>