2017-02-13 77 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。 –