我有一個選擇框,如下所示:選擇元素返回值時禁用
<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中創建一系列選項時,是否需要添加選定的屬性?從使用的角度來看,選擇最初提供的選項與我無關,但我很樂意遵循最佳程序。我假設瀏覽器將顯示的選項解釋爲選中狀態,如果沒有標記爲這樣的話。
我沒有看到你在'成功'回調中設置選擇的值,或者設置'選項''selected'屬性之一... –
爲什麼你期望'1,2 ,3''! –
你的$('#selectbox')。val();呼叫?在附加選項之前,可能你會打電話給它。 –