我正在尝试编写一个非常简单的表单验证,这里是我所拥有的示例代码片段:
if($('input[name=name]').val() == ""){
e.preventDefault();
alert('prevented')
}
在if语句中有一条规则可行。我想做的是在if语句中添加一些规则,例如:
input[name=email]
input[name=company]
但是这样的事情不起作用:
if($('input[name=name]').val() && $('input[name=email]').val() && $('input[name=company]').val() == "")
有没有办法在那里添加这三个规则?它似乎不适用于&&?
感谢您的帮助!
答案 0 :(得分:1)
&&
个单独的表达式。在您的示例中,三个表达式为:
$('input[name=name]').val()
$('input[name=email]').val()
$('input[name=company]').val() == ""
请注意,在这种情况下,前两个只是值。最后一个是使用类型cohersion。如果你试图避免使用类型cohersion(因为你首先提出这个问题很可能是这样),那么你需要提供完整的表达式:
$('input[name=name]').val() === ''
$('input[name=email]').val() === ''
$('input[name=company]').val() === ''
将这些放在if语句中:
if ($('input[name=name]').val() === '' &&
$('input[name=email]').val() === '' &&
$('input[name=company]').val() === '') {
...
}
或者在可读性方面:
var isNotEmpty = function(inputName) {
var selector = 'input[name=' + inputName + ']';
return $(selector).val() !== '';
}
var isValid = ['name', 'email', 'company'].every(isNotEmpty);
if (!isValid) {
...
}
答案 1 :(得分:0)
&&
优先于==
。这意味着您的表达式将被评估为3个不同的表达式,这些表达式都需要满足。这些是:
$('input[name=name]').val()
,$('input[name=email]').val()
和$('input[name=company]').val() == ""
。
你想要的就是所有3个值都等于""
,在这种情况下你需要做类似的事情:
if($('input[name=name]').val() == "" &&
$('input[name=email]').val() == "" &&
$('input[name=company]').val() == "")
答案 2 :(得分:0)
您需要单独比较每个值,然后通过&&
if($('input[name=name]').val() == "" &&
$('input[name=email]').val() == "" &&
$('input[name=company]').val() == "")
说实话,在懒惰的日子里,我希望另一种方式也能奏效。但幸运的是,这并不是逻辑如何运作的。