JQuery在更改时提交select字段,ajax结果

时间:2011-08-02 15:28:31

标签: javascript jquery ajax

在我的rails应用程序中,我在表单中有一个选择字段。当字段发生变化时,我希望它提交表单,并远程检索结果。

这是我当前的代码(编辑 - 这部分有效,我正在尝试添加更多内容):

$(function() {
  $("#statusFilter").live("change", function() {
    this.submit();
  });
});

在应用程序的不同部分,我有以下内容,对于超链接,单击时,远程返回链接。所以我对上面的表格也有同样的效果。

$(function() {
  $("#posts_container th a").live("click", function() {
    $.getScript(this.href);
    return false;
  });
});

这是另一个如何使用搜索表单的示例

  $("#dash_search input").keyup(function() {
    $.get($("#dash_search").attr("action"), $("#dash_search").serialize(), null, "script");
    return false;
  });

我试图远程刷新的内容存在于posts_container

2 个答案:

答案 0 :(得分:4)

如果您没有使用表单来容纳任何其他表单元素,我个人不会在此实例中使用选择字段周围的表单。

根据您的说法,您似乎正在尝试实现以下目标:

  1. 用户更改选择字段。
  2. 然后,使用select字段中的新值更新posts_container字段。
  3. 如果我有正确的话,我会编写以下代码:

    选择字段

    <div>
        <select id="statusFilter">
            <option value="1">Option 1</option>
            <!-- Other options... -->
        </select>
    </div>
    

    <强>的JavaScript

    <script type="text/javascript">
        $(document).ready(function() {
            $("#statusFilter").change(function() {
                // Possibly show an ajax loading image $("#ajax_loading").show();
                $("#posts_container").load("somepage.php", { value: $(this).val() }, function() {
                    // Do something to say the data has loaded sucessfully
                    // Possibly hide the ajax loading image $("#ajax_loading").hide();
                });
            });
        });
    </script>
    

    我不知道这是否有帮助或是否在正确的界限,但请告诉我,如果没有,我会尽力帮助。

答案 1 :(得分:1)

试试这个

$(function() {
  $("#statusFilter").live("change", function() {
    //$(this).closest("form").submit();
    var $form = $(this).closest("form");
    $.post( {
       url: $form.action, 
       data: $form.serialize(),
       success: function(){ //Write code here to handle on success }
    });
});