我从数据库中填充了<select>
:
$(function(){
$.ajax({
type: "GET",
url: "lib/deleteuser.getusernames.php",
async: "false",
success: function(response){
$("#users").append('<option>' + response.split(",").join("</option><option>") + '</option>');
}
});
});
(顺便说一句,这样做很好)
现在,我尝试使用<select>
的值并使用它来运行另一个查询,但所有返回的内容都没有,或者未定义&#39;。
以下是我的尝试:
var username = $("#users option:selected").val();
var username = $("#users :selected").val();
var username = $("#users option:selected").text();
var username = $("#users :selected").text();
我理解.val()
只获取输入的值,但在这种情况下,选项文本是否仍然算作输入?我试过.text()
以防万一,但仍然没有提出任何问题。
答案 0 :(得分:2)
在ajax完成之前,您似乎想要获取输入的值,您应该将async: "false",
更改为async: false
。
答案 1 :(得分:1)
您是否尝试过$("#users").val()
?
.val()
method获取(或设置)表单元素的值,包括输入,选择和textareas。您可以直接在select元素上使用它,而不是尝试使用option:selected
来获取所选选项。
答案 2 :(得分:1)
如果有帮助可以试试
$("#users > option:selected").attr("value")
这适合我。
答案 3 :(得分:1)
正如undefined所说,看起来你的选择器可能领先于异步GET。如果要保留异步行为,可以尝试此操作:
$(function(){
$.ajax({
type: "GET",
url: "lib/deleteuser.getusernames.php",
success: function(response){
$("#users").append('<option>' + response.split(",").join("</option><option>") + '</option>');
userSelect();
}
});
var userVal,
userText,
userElem;
var userSelect = function () {
$( '#users' ).change(function(){
userVal = $( 'option:selected', this ).val();
userText = $( 'option:selected', this ).text();
userElem = $( 'option:selected', this );
});
};
});
答案 4 :(得分:0)
你试过吗
$('#users option').html();
哪个像innerHTML一样?希望这会有所帮助。