Ich habe ein paar Artikel gelesen über Checkboxen immer einen falschen Zustand, aber habe nichts über mein eigenes Problem gefunden.Checkbox immer wieder falsch
So, hier ist das Skript:
<script type="text/javascript">
function update_contact(id, name) {
alert("idCont : " + id + "\n nameCKB : " + name + "\n state : "
+ $(this).attr('checked'));
var a = location.pathname.substring(1).split('/')
$.ajax({
url : '@Url.Action("update_contact")',
type : 'POST',
data : {
name : name,
isChecked : $(this).is(':checked'),
idOpp : a[2],
idCont : id
},
success : function(result) {
}
});
};
</script>
Und hier ist der Code der Checkbox:
@If mail = False Then
@<input type="checkbox" name="mailed" id="mailed" class="mailed" onclick="update_contact(@item.idContact.toString() , 'mailed')" />
Else
@<input type="checkbox" name="mailed" id="mailed" class="mailed" onclick="update_contact(@item.idContact.toString() , 'mailed')" checked="checked" />
End If
Und hier wird der Code vom Server generiert:
<input name="mailed" id="mailed" class="mailed" onclick="update_contact(1 , 'mailed')" type="checkbox">
In Am Anfang habe ich einen HTML-Helfer benutzt. Es wurde Rückkehr smth wie folgt aus:
<input id="mailed" name="mailed" onclick="update_contact(1 ,'mailed')" value="true" type="checkbox">
<input name="mailed" value="false" type="hidden">
ich, obwohl es aufgrund der zweiten Eingang war, dass es immer einen falschen Zustand zurückkehrt.
(sorry, wenn mein Englisch ist schlecht, ich bin kein Englisch als Muttersprache)
Es funktioniert sehr gut! Vielen Dank an alle. Dies ist die Lösung, die ich wähle, weil ich es verstehen konnte. –
@EliasVanOotegem - Der '$ .ajax()' Teil hat nichts damit zu tun. In der ersten Hälfte meiner Antwort gebe ich 'this' vom Inline-Handler aus, so dass der 'cb'-Parameter das Kontrollkästchen ist. Die Alternative, die ich in der zweiten Hälfte meiner Antwort gegeben habe, verwendet jQuery, um den Click-Handler zu erstellen, so dass jQuery "this" auf das angeklickte Element setzt. – nnnnnn
aw ... poppycock, sollte deine Antwort genauer betrachtet haben ... sorry –