-1

我有一个下拉列表,当<option value="0">被选中时,它应该返回所有项目而不是一个空字符串(这是我在执行时看到的console.log(),如果有一些值,例如1,2,3,etc...它返回相应的结果。

我需要检索一个 value 0,当它被选中时,它会返回一个an empty string,而其他数字则按应有的方式检索。

这是我的功能:

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);
}

这是一个下拉 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>

有人知道我在这里做错了什么吗?

在 PHP 中,每当函数返回0值时,它都会返回FALSE.
严格与宽松的文章

== 更新 ==

对不起,我在PHP中犯了一个错误,这就是为什么它返回一个空字符串,所以逻辑上它做了它应该做的,是我在询问之前没有检查好。抱歉,感谢您指出我。

4

2 回答 2

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>

""如果选择了默认值(不是) ,则以下 JS 将返回所有值"0"

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);
}
于 2013-05-23T22:08:41.390 回答
1

更改

<option selected="selected" value="">-- Choose a component --</option> 

<option selected="selected" value="0">-- Choose a component --</option>
于 2013-05-23T22:15:24.210 回答