Automatisches speichern, verarbeiten nach eine Klick auf ein option Feld, HTML
Karl
- html
- javascript
Ich möchte ein html Feld aus meiner Seite einbinden, das man aktivieren bzw. deaktivieren kann. Es soll ohne das ich auch einen Absende Button klicke gepeichert werden. Also sofort wenn es geklickt ist.
Nach was muss ich mich den in den weiten des Internets umschauen um hierbei eine Lösung zu finden.
Danke
Karl
Hallo Karl,
leider ist deine Beschreibung sehr oberflächlich und ungenau, so dass ich dir noch keinen wirklich gezielten Hinweis geben kann. "Mehr Input!"
Ich möchte ein html Feld aus meiner Seite einbinden, das man aktivieren bzw. deaktivieren kann.
Was für ein Feld? Ein Textfeld, also ein textarea-Element?
Es soll ohne das ich auch einen Absende Button klicke gepeichert werden.
Wo gespeichert? Auf dem Client-Rechner? Auf dem Server?
Also sofort wenn es geklickt ist.
Hmm. Also doch erst klicken? Warum dann nicht "absenden"?
Nach was muss ich mich den in den weiten des Internets umschauen um hierbei eine Lösung zu finden.
Vielleicht bist du hier schon richtig. Aber du stellst noch nicht die richtigen Fragen, bzw. stellst sie nicht präzise genug.
Ciao,
Martin
Hallo, danke erst einmal für die Antwort.
Auf meiner Seite ist folgender HTML Code
<form action="bearbeiten.php" method="get">
<div class="form-check">
<input class="form-check-input" type="radio" name="frage" value="1">
<label class="form-check-label">
sehr gut
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="frage" value="2">
<label class="form-check-label">
gut
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="frage" value="3">
<label class="form-check-label">
oje
</label>
</div>
</form>
Nach der Auswahl, also eines KLICKS auf eines der Felder sollte das Formular sofort ausgeführt werden, ohne das die Seite verlassen wird. In der Datei bearbeiten.php wird die Information in die Datenbank geschrieben.
Ich hoffe so ist es besser, danke.
Karl
Nach der Auswahl, also eines KLICKS auf eines der Felder sollte das Formular sofort ausgeführt werden, ohne das die Seite verlassen wird. In der Datei bearbeiten.php wird die Information in die Datenbank geschrieben.
Es gänge so: Nach Feststellung des Klick-Ereignisses die Funktion formular.submit() aufrufen und dafür sorgen daß bearbeiten.php keinen Status 200 sendet sondern Status 204 -- damit wird die Seite nicht verlassen.
Ich würde es jedoch nicht so machen. MFG
Hallo,
<form action="bearbeiten.php" method="get"> <div class="form-check"> <input class="form-check-input" type="radio" name="frage" value="1"> <label class="form-check-label"> sehr gut </label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="frage" value="2"> <label class="form-check-label"> gut </label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="frage" value="3"> <label class="form-check-label"> oje </label> </div> </form>
Nach der Auswahl, also eines KLICKS auf eines der Felder sollte das Formular sofort ausgeführt werden, ohne das die Seite verlassen wird.
ja, okay, jetzt ist mir klar, was du meinst. Und eins vorweg: Ich finde solche Formulare ausgesprochen unergonomisch. Ein Klick, und die Entscheidung ist getroffen? Was ist, wenn ich unschlüssig bin, eine Markierung gesetzt habe und mir dann einfällt: Ach nein, lieber doch Antwort B? Was ist, wenn ich zittrige Finger habe und versehentlich eine falsche Auswahl angeklickt habe?
Das von dir gewünschte Verhalten bekommst du zum Beispiel, indem du für jedes der radio-Felder einen onclick-Handler registrierst, der nichts weiter tut als
this.form.submit()
Damit die angezeigte Seite nicht verlassen wird, sollte das auswertende Script auf dem Server dann den HTTP-Status 204 (No Content) senden.
Es gibt andere, noch aufwendigere Lösungen - zum Beispiel, dass du die Formulardaten mit Javascript auswertest und mit XmlHttpRequest() (in der Umgangssprache: AJAX) an den Server sendest. So könntest du auch noch eine sichtbare Reaktion für den Nutzer realisieren.
Es hängt also von deinen Ansprüchen und deinen Fähigkeiten ab.
So long,
Martin
Ich habe dieses vor kurzem für mich so umgesetzt
$('.artikelstandort').change(function() {
var formData = {
'standort': $(this).val(),
'projektID': $(this).data('projekt-id'),
'warenkorbID': $(this).data('warenkorb-id')
};
console.log(formData);
$.ajax({
url: "updateArtikelstandort.php",
type: "post",
dataType: 'json',
data: formData,
success:function(d) {
$('#'+d.id).append('gespeichert');
setTimeout(function() {
$('#'+d.id).empty();
}, 1000);
}
});
});
In der updateArtikelstandort.php steht folgendes
if ($stmt = $mysqli->prepare("Update warenkorb_temporaer SET wt_artikelstandort=? WHERE wt_id=?")) {
$stmt->bind_param("ss", $_POST["standort"], $_POST["warenkorbID"]);
$stmt->execute();
}
echo json_encode( array("id" => $_POST["warenkorbID"]));
Und hier noch das HTML Feld
<label for="artikelstandort">Aufbauort</label>
<input
type="text"
name="artikelstandort[]"
class="artikelstandort"
data-projekt-id="<?php echo htmlspecialchars($array['wt_projektID']); ?>"
data-warenkorb-id="<?php echo htmlspecialchars($array['wt_id']); ?>"
value="<?php echo htmlspecialchars($array['wt_artikelstandort']); ?>"
Hallo,
wie Martin schon schrieb, sind mehr Infos notwendig. Noch besser eine Beispielseite. Was Bernd schrieb, würde Dir vielleicht auch weiterhelfen, wenn Du schon Begriffe wie asynchronen Datenübertragung kennen würdest, was ich im Moment noch ausschließe. Eines hast du allerdings angedeutet, HTML-Feld einbinden, dann wäre vielleicht auch eine Iframe Lösung für dich etwas. So, jetzt hast Du zumindest mal ein paar Schlüsselworte, die dich hier zu einer konkreteren Frage führen könnten.
lg.