获取动态填充选择的值

时间:2012-10-24 02:43:19

标签: jquery

我从数据库中填充了<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()以防万一,但仍然没有提出任何问题。

5 个答案:

答案 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一样?希望这会有所帮助。