或jquery运算符不工作我怎么期望..?

时间:2011-05-21 18:29:31

标签: jquery jquery-selectors if-statement operators

$('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;
    }
});

chrome突出显示我的if语句。我真的不明白这里有什么问题。我想我可以在两个字段中添加一个类,但我不需要为我的布局。我是不是以某种方式写错了?

4 个答案:

答案 0 :(得分:2)

我立即注意到的是

$('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 :(');
});

更好的是给提交按钮一个正确的ID和输入元素一些其他属性,所以你不会在验证中不小心包含其他控件。

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

$("*[validate='true']").each(function() {
    ok &= ok && $(this).val().length > 0;
});

答案 1 :(得分:1)

($('input[TYPE=TEXT]').val().length == 0 || $('textarea').val().length == 0)

答案 2 :(得分:0)

看起来你有'input[TYPE="TEXT"'在很多地方缺少],这可能是问题吗?

答案 3 :(得分:0)

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

您忘记了]

我建议你使用:text伪选择器;)

$("input:text");

:text