我有一个选择框如下:
<select id="selectbox" class='info-entry-select' name="country">
<option value="1" selected="selected">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
此选择框位于隐藏的div中,当出现时,使用ajax和单独的php文件刷新选择框选项。这是更新选择框的JavaScript:
$("#changeselectoptions").on('click', function() {
$.ajax({
type: "GET",
url: "includes/selectoptions.php",
dataType: 'json',
success: function(result){
// Replace options of select box
var $el = $("#selectbox");
var newOptions = result['catsOrderList'];
// newOptions correctly returns an array in the form of {1: "One", 2: "Two", 3: "Three", 4: "Four"}
$el.empty(); // remove existing options
$.each(newOptions, function(key,value) {
$el.append($("<option></option>").attr("value", key).text(value));
});
}
});
return false;
});
如果我现在打电话:$('#selectbox').val();
我未定义,我不知道为什么?更令人困惑的是,如果我停用 #selectbox (使用将.attr('disabled', 'disabled');
添加到 #selectbox 的切换开关,请尝试$('#selectbox').val();
我得到预期的值为1,2,3等
如何在不禁用该框的情况下获取此值,或者我忽略了什么?
修改
我被问到$('#selectbox').val();
来电的位置。它没有比我上面提到的更多,但要彻底,它是从与select元素相同的div中的提交按钮调用,如下所示:
$("#submitbutton").on('click', function() {
var selectBoxVal = $('#selectbox').val();
console.log('value is: ' + selectBoxVal);
return false;
});
到目前为止我唯一的想法是它可能是一个dom问题?我说这是无知的,因为我的知识并不完全了解完整的细节但是我已经看到了一些问题,其中元素被javascript实时更改,而后来的javascript调用无法正确检索 - 而如果被检索的元素存在时它们可以正常工作页面已加载。
我没有为任何选项分配选定的属性,但我不认为这会导致返回 undefined 。例如,如果我禁用了选择框,则从同一查询中正确返回值(如上所述),但它仍然没有手动添加选定属性。我离题了,但是在javascript中创建一系列选项时是否需要添加所选属性?从使用的角度来看,哪个选项最初呈现为选中与我无关,但我很乐意遵循最佳程序。我假设浏览器将显示的选项解释为选中,如果没有标记为选中。
答案 0 :(得分:0)
我相信select的“value”将是在该selectbox中具有“selected”属性的<option>
。否则,该输入没有指示值。