所以我只是想确定输入字段的值是空还是空。使用jQuery的.val()函数可以很简单。将其与反向验证相结合,您就可以得到:
if($('input').val() != '' || $('input').val() != null)
{
//any code
}
然而由于某种原因,这并没有像往常那样成功。 相反,我必须使用它:
if(!$('input').val() == '' || !$('input').val() == null)
{
//any code
}
所以我想知道:这两者之间的区别是什么?为什么第一个代码与第二个代码的工作方式不同?
第一个代码的更新
添加了一个选择框。
答案 0 :(得分:2)
首先,val()
不能同时为空字符串和null
。这就是if($('input').val() != '' || $('input').val() != null)
总是返回true
。
在这种情况下你需要&&
。
第二个例子更有趣。由于JS不是强类型语言,!$('input').val() == ''
会尝试将!$('input').val()
与空字符串进行比较,即它将$('input').val()
转换为bool
,否定它,获取false
结果,并将此值与空字符串进行比较。
最好的部分:false == ''
等于... true
!隐式类型转换做得很好。
你能做什么?
在第一个示例中,只需将||
更改为&&
:
if ($('input').val() != '' && $('input').val() != null)
在第二个中你应该修复操作顺序:
if (!($('input').val() == '') && !($('input').val() == null))
或更好
if (!($('input').val() == '' || $('input').val() == null))