jQuery val()没有获得实时结果

时间:2011-12-08 21:05:22

标签: jquery html ajax

好的,所以我正在做一个“快速搜索”的事情。每当表单上的字段发生变化时我都会收到jQuery GET请求,但它无法正常工作。我提供了SSCCE

不要担心AJAX调用,因为不起作用的是请求。例如,如果我勾选19,则GET请求仍为Pick one

这是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Untitled 3</title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
        $(function() {
            var test = $(".age1").val();
            alert(test);
            var dataString = "test=" + test;
            $("#formtest").live("change", function() {
                $.ajax({
                    type: "GET",
                    url: "quick_search.php",
                    data: dataString,
                    cache: false,
                    success: function(html) {
                        $("#display").after(html);
                    }
                });
            });
            return false;
        });
    </script>
</head>
<body>
    <form action="quick_search.php" id="formtest" method="GET"> 
        live GET
        <select class="age1" name='age1'>
            <option value='Pick One'>- Pick One -</option>
            <option value='16'>16</option>
            <option value='17'>17</option>
            <option value='18'>18</option>
            <option value='19'>19</option>
        </select>
    </form>
    <div id="display"></div>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

每次值更改时,您都需要更改dataString的值。目前,您只是在页面加载时更改它,因此它之后永远不会更改。

答案 1 :(得分:2)

尝试在更改功能

中移动var test = $(".age1").val();

答案 2 :(得分:1)

试试这个

$(function() {
  $("#formtest").live("change", function () {
    $.ajax({
       type: "GET",
       url: "quick_search.php",
       data: "test=" + $(".age1").val(),
       cache: false,
       success: function(html){
          $("#display").after(html);
       }
    });
  });
});