仅在禁用时选择元素返回值

时间:2017-02-13 22:23:55

标签: javascript jquery html ajax

我有一个选择框如下:

<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中创建一系列选项时是否需要添加所选属性?从使用的角度来看,哪个选项最初呈现为选中与我无关,但我很乐意遵循最佳程序。我假设浏览器将显示的选项解释为选中,如果没有标记为选中。

1 个答案:

答案 0 :(得分:0)

我相信select的“value”将是在该selectbox中具有“selected”属性的<option>。否则,该输入没有指示值。