代码之家  ›  专栏  ›  技术社区  ›  Andy Rose

检索jQuery自动完成字段

  •  3
  • Andy Rose  · 技术社区  · 15 年前

    我正在使用jQuery自动完成插件,并连接了一个输入字段,以便在输入文本时从后端数据库检索值,然后可以选择文本。
    然后,我有第二个输入字段,我以类似的方式连接了该字段,但是我希望在autocomplete ajax调用中将第一个输入字段的值作为querystring参数传递,以便可以过滤autocomplete结果。
    我尝试过使用第一个输入字段的.val()方法,但这似乎总是返回空字符串,除非我允许表单回发。我也尝试过只使用getElementById('xxx')。值,但这会返回一个空值。
    是否有任何方法可以检索在第一个字段中选择的动态值,以便将其传递到服务器的jQueryAjax调用中?
    代码如下,为了简洁起见,删除了一些:

    <% using (Html.BeginForm()) {%>
        <script language="javascript">
            $(document).ready(function(){
                $("#Make").autocomplete('/MyController/AutoCompleteMake', {
                    dataType: 'json',
                    parse: function(data) {
                        var rows = new Array();
                        for (var i = 0; i < data.length; i++) {
                            rows[i] = { data: data[i], value: data[i], result: data[i] };
                        }
                        return rows;
                    },
                    formatItem: function(row) {
                        return row;
                    },
                    delay: 40
                });
    
                $("#Range").autocomplete('/MyController/AutoCompleteRange?Make=' + $('input[name=Make]').val(), {
                    same as above .......
                });
            });
      </script>
        <fieldset>
            <legend>Fields</legend>
            <p>
                <label for="Make">Make:</label>
                <%= Html.TextBox("Make") %>
                <%= Html.ValidationMessage("Make", "*") %>
            </p>
            <p>
                <label for="Range">Range:</label>
                <%= Html.TextBox("Range") %>
                <%= Html.ValidationMessage("Range", "*") %>
            </p>
    <% } %>
    

    我刚刚开始使用jQuery和MVC,因此非常感谢您的帮助。

    1 回复  |  直到 15 年前
        1
  •  5
  •   djdd87    15 年前

    您需要使用extraParams函数:

    $("#Make").autocomplete(url, {
       extraParams: {
           yourValue: function() { return $("input[name=Make]").val(); }
       }
    }); 
    

    然后,它将在HttpContext中传递给您的目标。

    string valueToUse = context.Request.QueryString["yourValue"];
    

    从jQuery自动完成 Documentation :

    通常一个自动完成的字段取决于 关于另一个字段的值。因为 在这种情况下,可以使用extraParams选项 提供必要的动力 参数