在有人询问之前,我已经搜索了现有问题并找到this question,但答案是undefined
被设置为null
,而这不是这种情况。
这是我的代码:
check_availability = function () {
var value = $('#contact_type').val();
if (value !== undefined) {
// do some stuff
}
}
简单吧?我有一个<select id="contact_type"></select>
,其中包含通过ajaxy填充的选项。最初选项列表为空,因此jQuery val()返回undefined
。
到目前为止一切都很好。
除if
块中的代码始终执行外。我在FireBug的第3行贴了一个断点,我明白了:
谁能告诉我发生了什么?
P.S。这是Firefox 4.0
编辑:我知道有很多方法可以达到相同的结果,我更感兴趣的是为什么值根据FireBug未定义,但是接下来是!== undefined。< / p>
答案 0 :(得分:3)
只需检查value
的真实性。
if (value) {
// sexy times
}
BTW,当null
不包含undefined
时,jQuery返回<select>
,而不是<option>
。 http://jsfiddle.net/mattball/cQ83z/
答案 1 :(得分:2)
val()
永远不会undefined
:http://jsfiddle.net/ThiefMaster/UmZhG/
如果<select>
没有选项,则为null
;否则总会选择一个选项。
Fyi,value == undefined
自null == undefined
起为真(即使null !== undefined
)
答案 2 :(得分:1)
试试这个:
if (typeof(value) != 'undefined') {
// do some stuff
}
希望有所帮助。
答案 3 :(得分:1)
===运算符不会进行可能导致错误的类型转换。试试==而不是。或者与null比较。
答案 4 :(得分:1)
以这种方式尝试......
if (value != undefined) {
// do some stuff
}
答案 5 :(得分:0)
使用此:
if($("#contact_type").val() != ""){
//does have a value
}else{
//No value there
}