选择元素返回值时禁用
我有一个选择框,如下所示:选择元素返回值时禁用
<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预期VAL等
如何我得到这个值,而不禁用箱,或你有什么我忽略
编辑:。
我一直在问我哪里调用$('#selectbox').val();
是它的没有什么比我上面提到的,但要彻底的,它是从一个名为同一div提交按钮,选择元素如下更复杂:
$("#submitbutton").on('click', function() {
var selectBoxVal = $('#selectbox').val();
console.log('value is: ' + selectBoxVal);
return false;
});
我只有这么远的想法是,它可能是一个DOM问题?我说这是无知的,因为我的知识并不完全知道完整的情况,但我已经看到了一些问题,其中元素被javascript直接改变,并且后来的JavaScript调用没有正确地检索 - 但是如果正在检索的元素存在时它们工作正常该页面已加载。
我不会将选定的属性分配给任何选项,但我不认为这会导致返回未定义的。例如,如果我禁用了选择框,则该值将从相同的查询中正确返回(如上所述),但它仍然没有手动添加选定的属性。我离题了,但是在JavaScript中创建一系列选项时,是否需要添加选定的属性?从使用的角度来看,选择最初提供的选项与我无关,但我很乐意遵循最佳程序。我假设浏览器将显示的选项解释为选中状态,如果没有标记为这样的话。
我相信select的“值”将是<option>
,它在该选择框中具有“selected”属性。否则,该输入没有指示值。
如何回答问题/解决问题? –
问题的一部分是:“我忽略了什么?”我相信这是OP可能忽略的select元素的一个方面。 – dmitrydwhite
如果没有默认选项,select将选择第一个选项,所以在这种情况下,$(“#selectbox”).val()应该返回1而不是undefined。 –
我没有看到你在'成功'回调中设置选择的值,或者设置'选项''selected'属性之一... –
为什么你期望'1,2 ,3''! –
你的$('#selectbox')。val();呼叫?在附加选项之前,可能你会打电话给它。 –