2016-07-14 7 views
1

Ich stoße auf ein Problem, bei dem der von jQuery gegriffene Wert und das, was sich tatsächlich im Eingabetextfeld befindet, unterschiedlich sind.jQuery, Erkennung des tatsächlichen Eingabe-Textwerts

Ein Formular mit einer Vielzahl von Eingaben wird ausgefüllt, wenn die Seite mit Informationen aus unserer Datenbank geladen wird. Daher haben die Eingabetextfelder alle einen Wert.

Wenn das Formular abgeschickt wird, habe ich eine Funktion, die zuerst nach Texteingaben sucht. Dies ist ein Teil dieser Funktion:

$("form#accountSettingsForm input").each(function(){ 
var input = $(this); 
var value = input.attr("value"); 
} 

Nehmen wir an, der Eingabewert ist 12, wenn die Seite zunächst geladen wurde. Wenn ich die 12 im Textfeld löschen und das Feld leer lassen und das Formular abschicken, ist der oben genannte Code "Wert" immer noch 12, nicht leer. Wie kann ich feststellen, was eigentlich der Wert der Textbox ist? Danke im Voraus.

+2

'input.val()' sollte das tun, was Sie wollen. – Barmar

+1

"Wall of Text" Fragen neigen dazu, ignoriert zu werden. Ich würde vorschlagen, dass Sie versuchen, Ihre Frage klar zu formulieren und so viele nicht wesentliche Informationen wie möglich zu entfernen. Wie es aussieht, ist unklar, was Sie fragen. – Madbreaks

+0

'$ (this) .val()' funktioniert, siehe https://jsfiddle.net/barmar/4t9Lqh53/ – Barmar

Antwort

1

Dies ist eine Situation, in der es ein Unterschied zwischen dem valueAttribute ist und die valueEigenschaft. Das Attribut stammt aus dem HTML, die Eigenschaft aus dem dynamischen Status des DOM. Um den aktuellen Wert einer Eingabe zu erhalten, nachdem der Benutzer sie geändert hat, verwenden Sie die Methode jQuery .val().

$("#accountSettingsForm").submit(function() { 
 
    $(this).find("input").each(function() { 
 
    var input = $(this); 
 
    var value = input.val(); 
 
    console.log(this.name + " = " + value); 
 
    }); 
 
    return false; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form id="accountSettingsForm"> 
 
    Input 1: 
 
    <input name="field1" type="text"> 
 
    <br>Input 2: 
 
    <input name="field2" type="text"> 
 
    <br> 
 
    <input name="submit" type="submit"> 
 
</form>

+0

Ich wusste, es war etwas Einfaches. Vielen Dank an Sie und an alle anderen, vor allem aber für die Klärung des Attributs und der Eigenschaft. –

1

Die folgende scheint gut zu funktionieren. Wenn Sie sich den Wert regelmäßig merken/speichern möchten, registrieren Sie sich für das Ereignis on('input'). Damit Sie jedes Mal der Benutzer in das Textfeld ein Ereignis erhalten:

$("#accountSettingsForm :input").on('input', function() {   
    console.log($(this).val()); 
}); 

Soweit ich das beurteilen kann, die $(this).val() Zugriffsmethode funktioniert gut.

Hier ist ein JSFiddle: https://jsfiddle.net/uz8k7rjp/

Und die Original-Beitrag, wo ich diese Methode bekam: JQuery: detect change in input field

Verwandte Themen