или оператор с JQuery не работает, как я ожидал ..? - PullRequest
0 голосов
/ 21 мая 2011
$('input[TYPE="SUBMIT"]').click(function(){
    if ($('input[TYPE="TEXT"').val().length===0 || $('textarea').val().length===0)
    {
        console.log($('input[TYPE="TEXT"').val().length);
        console.log($('textarea').val().length);
        return false;
    }
});

хром подчеркивает мое утверждение if.Я действительно не вижу, что здесь не так.Я полагаю, я мог бы добавить класс к обоим полям, но мне это не нужно для моего макета.Я как-то неправильно это пишу?

Ответы [ 4 ]

2 голосов
/ 21 мая 2011

Я сразу заметил, что

$('input[TYPE="TEXT"')

должно быть

$('input[TYPE="TEXT"]')

Обратите внимание, однако, что созданиеПодобный выбор будет проверять только длину первого текстового поля / текстового поля, которое он найдет, а не каждого из них.

В этом случае вам потребуется что-то вроде этого:

$("input[type='submit']").click(function()
{
    var ok = true;
    $("input[type='text'], textarea").each(function() {
        ok &= ok && $(this).val().length > 0;
    });
    alert(ok ? 'All OK' : 'Not OK :(');
});

Еще лучше было бы присвоить кнопке подтверждения правильный идентификатор, а элементам ввода какой-либо другой атрибут, чтобы случайно не включить другие элементы управления в проверку.

<input type="text" validate="true" />

$("*[validate='true']").each(function() {
    ok &= ok && $(this).val().length > 0;
});
1 голос
/ 21 мая 2011
($('input[TYPE=TEXT]').val().length == 0 || $('textarea').val().length == 0)
0 голосов
/ 21 мая 2011

$('input[TYPE="TEXT"/*]*/')

Вы забыли ]

Я рекомендую вместо этого использовать псевдоселектор :text;)

$("input:text");

:text

0 голосов
/ 21 мая 2011

Похоже, у вас есть 'input[TYPE="TEXT"' с отсутствующим ] во многих местах, может ли это быть проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...