当dropdown选择值为0时,jQuery函数返回一个空字符串

时间:2013-05-23 22:01:46

标签: php jquery html

我有一个下拉列表,当选择<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中犯了一个错误,这就是为什么它返回一个空字符串,所以逻辑上它做了它应该做的,是我在问之前没有检查好。对不起,谢谢你指点我。

2 个答案:

答案 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>