Функция jQuery возвращает пустую строку, когда выбранное значение выпадающего меню равно 0
У меня есть выпадающий список, когда <option value="0">
выбран, он должен вернуть все элементы вместо пустой строки (это то, что я вижу при выполнении console.log()
, если есть какое-то значение, такое как 1,2,3,etc...
возвращает соответствующие результаты.
Мне нужно получить значение 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, поэтому он возвратил пустую строку, так что логически он сделал то, что должен, это был я, который не проверил хорошо, прежде чем спрашивать. Извините и спасибо за указание на меня.
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);
}
Изменить
<option selected="selected" value="">-- Choose a component --</option>
в
<option selected="selected" value="0">-- Choose a component --</option>