Ich habe den ganzen Morgen nach diesem gesucht, aber fand nichts, das mir helfen könnte. Ich konnte das mit dem Handbuch nicht herausfinden ... Ich habe noch nie wirklich jQuery oder javaScript geschrieben, also sei bitte sanft.jQuery AJAX schicken auch versteckte Felder auf Formularänderung
Ich konnte herausfinden, wie man die Datenbank aktualisiert, wenn der Benutzer das Eingabefeld verlässt. :) Aber ich möchte auch die versteckten Eingabefelder senden.
Hier ist meine Form & Skript (die Formular-Elemente den gleichen Namen wie ID haben so für dieses Beispiel, das ich ihnen Dinge zu halten lesbar links aus)
<form id="Form">
<input id='idA01-01-2017' type='hidden' value="1234"/>
<input id='idB01-01-2017' type='hidden' value="5678"/>
<input id='fromA01-01-2017' type='text' value=""/>
<input id='toA01-01-2017' type='text' value=""/>
<input id='fromB01-01-2017' type='text' value=""/>
<input id='toA01-01-2017' type='text' value=""/>
<input id="checkA01-01-2017" type="checkbox" value="1">
<input id="checkB01-01-2017" type="checkbox" value="1">
<input id='suggestion01-01-2017' type='text' value=""/>
</form>
<script>
$('input, select', $('#Form')).change(function(){
var dataFields = $(this).attr('id')+$(this).val();
$.ajax({
url: 'update.php',
type: 'POST',
data: dataFields,
dataType: "json",
success: function() {}
})
});
</script>
-edit- ich sehr dankbar bin zu die Hilfe, die ich von Axel bekam, aber das Skript schien meine Checkboxen zu durchbrechen.
Das ursprüngliche Formular wurde von onChange="document.Form.submit()"
eingereicht, deshalb benötigte ich die ausgeblendeten Eingabefelder vor den Kontrollkästchen, um den Wert festzulegen, falls das Kontrollkästchen deaktiviert war.
Jetzt mit dem jQuery Teil hat das nicht funktioniert, also habe ich die versteckten Felder entfernt und das folgende Skript verwenden. Da ich bei jQuery völlig neu bin, gibt es wahrscheinlich einen besseren Weg, aber es scheint zu funktionieren.
$('input, select', $('#Form')).change(function(){
var FORMdata = {},
// get current name
currName = $(this).attr('name'),
// extract the date
sDate = currName.substr(currName.length - 10);
//check if a checkbox is changed
if (currName.indexOf("checker") >= 0){
if($(this).is(":checked")) {
FORMdata[currName] = '1';
}
else {
FORMdata[currName] = '0';
}
}else{
// no checkbox was changed so it was a input field
// add current field to data object
FORMdata[currName] = $(this).val();
}
$.ajax({
url: 'update.php',
type: 'POST',
data: FORMdata,
success: function() {
}
})
});
Nizza das funktioniert, aber sendet die ganze Form, Ich mag nur das Feld schicken, und die ausgeblendeten Felder geändert hat. Und ja ich weiß, deshalb habe ich hinzugefügt "(die Formularelemente haben den gleichen Namen wie ID, also für dieses Beispiel habe ich sie ausgelassen, um die Dinge lesbar zu halten)" – needle
@needle Ich habe meine Antwort mit einer Variante aktualisiert, nur geändertes Plus zu senden versteckte Felder –
Korrigiere ich "$ ('input, select'). On ('change, input', function() {" sendet auch Daten an update.php, bevor der Benutzer das Eingabefeld verlässt? – needle