2017-02-13 71 views
0

我有一个选择框,如下所示:选择元素返回值时禁用

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

+0

我没有看到你在'成功'回调中设置选择的值,或者设置'选项''selected'属性之一... –

+0

为什么你期望'1,2 ,3''! –

+1

你的$('#selectbox')。val();呼叫?在附加选项之前,可能你会打电话给它。 –

回答

0

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

+0

如何回答问题/解决问题? –

+1

问题的一部分是:“我忽略了什么?”我相信这是OP可能忽略的select元素的一个方面。 – dmitrydwhite

+0

如果没有默认选项,select将选择第一个选项,所以在这种情况下,$(“#selectbox”).val()应该返回1而不是undefined。 –