Leere Texteingabe mit jQuery auswählen

Wie identifiziere ich leere Textfelder mit jQuery? Ich würde es gerne mit Selektoren machen, wenn es überhaupt möglich ist. Außerdem muss ich on id auswählen, da ich in dem realen Code, in dem ich dies verwenden möchte, nicht alle Texteingaben auswählen möchte.

In den folgenden beiden Codebeispielen zeigt das erste Beispiel den vom Benutzer in das Textfeld "txt2" eingegebenen Wert genau an. Das zweite Beispiel zeigt an, dass ein leeres Textfeld vorhanden ist. Wenn Sie es jedoch ausfüllen, wird es weiterhin als leer betrachtet. Warum ist das?

Kann dies nur mit Selektoren geschehen?

Dieser Code meldet den Wert im Textfeld "txt2":

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                $('#cmdSubmit').click(function() {
                    alert($('[id=txt2]').val());
                });             
            });
        </script>
    </head>
    <body>
        <form>
            <input type="text" name="txt1" id="txt1" value="123" /><br />
            <input type="text" name="txt2" id="txt2" value="" /><br />
            <input type="text" name="txt3" id="txt3" value="abc" /><br />
            <input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
        </form>
    </body>
</html>

In diesem Code wird das Textfeld "txt2" immer als leer gemeldet:

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                $('#cmdSubmit').click(function() {
                    if($('[id^=txt][value=""]').length > 0) {
                        if (!confirm("Are you sure you want to submit empty fields?")) {
                            if (event.preventDefault) {
                                event.preventDefault();
                            } else {
                                event.returnValue = false;
                            }
                        }
                    }
                });             
            });
        </script>
    </head>
    <body>
        <form>
            <input type="text" name="txt1" id="txt1" value="123" /><br />
            <input type="text" name="txt2" id="txt2" value="" /><br />
            <input type="text" name="txt3" id="txt3" value="abc" /><br />
            <input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
        </form>
    </body>
</html>

Antworten auf die Frage(9)

Ihre Antwort auf die Frage