Wybieranie pustego tekstu za pomocą jQuery

Jak zidentyfikować puste pola tekstowe za pomocą jQuery? Chciałbym to zrobić za pomocą selektorów, jeśli jest to w ogóle możliwe. Muszę także wybrać id, ponieważ w prawdziwym kodzie, w którym chcę tego użyć, nie chcę wybierać wszystkich wejść tekstowych.

W poniższych dwóch przykładach kodu pierwszy dokładnie wyświetla wartość wpisaną przez użytkownika w polu tekstowym „txt2”. Drugi przykład wskazuje, że istnieje puste pole tekstowe, ale jeśli je wypełnisz, nadal uważa je za puste. Dlaczego to?

Czy można to zrobić za pomocą tylko selektorów?

Ten kod raportuje wartość w polu tekstowym „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>

Ten kod zawsze zgłasza pole tekstowe „txt2” jako puste:

<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>

questionAnswers(9)

yourAnswerToTheQuestion