2012-06-03 52 views
1

我有一個選擇框,用戶可以在其中選擇填充文本框的值並且用戶可以編輯該值(使用Ajax)。 選擇框中的每個選項都有一個id和一個數據關鍵屬性。我使用JQuery的'change'事件處理程序來填充文本框中的數據關鍵值。如何在ajax之後的selectbox中獲取更新的選項屬性?

<select id="actions"> 
    <option id="p0" data-critical="100" value="0">Optie 0</option> 
    <option id="p1" data-critical="120" value="1">Optie 1</option> 
</select> 

<input type="text" id="editcritical" /> 

$("#actions").change(function() { 
    var selected = $(this).find('option:selected'); 

    $("#editcritical").val(selected.data('critical')); 
}); 

ajax-success: function(data){ 
    $("#p" + data.p.id).attr("data-critical", data.p.critical); 
} 

在阿賈克斯成功的數據臨界值被改變,但是當我再次選擇該選項,舊值顯示在文本框中。我試圖使用Live方法,但沒有發生任何事情。 Firebug在數據關鍵中顯示更新的值。

任何建議在文本框中顯示更新的值?

$("#editcritical").attr("data-critical"); 

+0

請發佈您更改'數據關鍵性'的ajax代碼。 – thecodeparadox

回答

1
$("#actions").change(function() { 
    var selected = $(this).find('option:selected'); 

    $("#editcritical").val(selected.attr('data-critical')); 
}); 

在你成功的功能,你應該嘗試:

success: function(data){ 
    $("#p" + data.p.id).data("critical", data.p.critical); 
} 

jQuery data() vs attr(data)知道更多。

+0

我試過了,但沒有。我可以使用來自數據關鍵型attr的值設置文本框,但只能使用未更新的值。 – cooxie

+0

@cooxie檢查我的更新。 – thecodeparadox

+0

@cooxie檢查更新爲你ajax成功 – thecodeparadox

0

你有嘗試嗎?

+0

我可以從數據關鍵中獲取並更新值。問題在於,在Ajax調用之後數據關鍵值發生了更改,並且我使用更新後的數據關鍵值再次選擇該選項,而舊值則顯示在文本框中而不是新值中。 – cooxie

+0

您的進一步代碼是否在ajax調用的.done/.success方法中? – Chris

+0

這就是爲什麼你應該替換$(「#editcritical」).val(selected.data('critical'));用$(「#editcritical」)。attr(「data-critical」);如建議。 – Abhijit

相關問題