2

我有一个<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>并使用它来运行另一个查询,但返回的只是什么都没有,或者“未定义”。

这是我尝试过的:

var username = $("#users option:selected").val();
var username = $("#users :selected").val();
var username = $("#users option:selected").text();
var username = $("#users :selected").text();

我知道.val()只获取输入的值,但在这种情况下,选项文本仍然算作输入吗?我尝试.text()以防万一,但仍然一无所获。

4

5 回答 5

2

似乎您正试图在 ajax 完成之前获取输入的值,您应该更改async: "false",async: false.

于 2012-10-24T02:49:01.037 回答
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 );
    });
  };
});
于 2012-10-24T02:57:30.660 回答
1

你试过$("#users").val()吗?

.val()方法获取(或设置)表单元素的值,包括输入、选择和文本区域。您可以直接在您的选择元素上使用它,而不是尝试使用option:selected.

于 2012-10-24T02:49:48.807 回答
1

试试这个,如果它可以帮助

$("#users > option:selected").attr("value")

这对我有用。

于 2012-10-24T02:50:18.850 回答
0

你有没有尝试过

$('#users option').html();

哪个像innerHTML一样工作?希望这可以帮助。

于 2012-10-24T02:47:04.627 回答