我有一个下拉列表,当选择<option value="0">
时,它应该返回所有项而不是空字符串(这是我在执行console.log()
时看到的,如果有一些值,例如{ {1}}它会返回相应的结果。
我需要检索一个值1,2,3,etc...
,当它被选中时,它会返回一个0
,而其他数字会被检索到它们。
这是我的功能:
an empty string
这是一个下拉HTML:
function _getCatsByCom(){
var com_id_selected = $('select[name=com_id]').val();
// Next line below with conditional statement is not working, don't know why.
if(com_id_selected != undefined)
console.info(com_id_selected);
}
有人知道我在这里做错了吗?
在PHP中,只要函数返回 0 值,它就会返回<select onchange="template.getCatsByCom();" class="span12" name="com_id">
<option selected="selected" value="">-- Choose a component --</option>
<option value="1">Content</option>
<option value="2">E-commerce</option>
</select>
。
Strict vs. Loose article
==更新==
我很抱歉,我在PHP中犯了一个错误,这就是为什么它返回一个空字符串,所以逻辑上它做了它应该做的,是我在问之前没有检查好。对不起,谢谢你指点我。
答案 0 :(得分:2)
使用您当前的HTML:
<select onchange="template.getCatsByCom();" class="span12" name="com_id">
<option selected="selected" value="">-- Choose a component --</option>
<option value="1">Content</option>
<option value="2">E-commerce</option>
</select>
如果选择了默认值(""
而非"0"
),以下JS将返回所有值;
function _getCatsByCom(){
var select = $('select[name=com_id]');
var val = select.val();
if (val == "") {
val = select.find('option').map(function () {
return this.value || undefined; // map will automatically remove the "" from the returned array.
}).get();
}
// Now val will either equal "1", or "2", or "3" etc OR the array of all values.
console.log(val);
}
看到这个在这里工作; http://jsfiddle.net/y5vPE/。虽然我发现设计不好,你现在有一个变量,有时一个字符串,而有时一个数组。
...如果您想将其“更正”为“0”,请将value=""
更改为value="0"
或更改您的功能;
function _getCatsByCom(){
var select = $('select[name=com_id]');
var val = select.val();
if (val == "") {
val = "0";
}
// Now val will either equal "0", "1", "2"...
console.log(val);
}
答案 1 :(得分:1)
更改
<option selected="selected" value="">-- Choose a component --</option>
到
<option selected="selected" value="0">-- Choose a component --</option>