我正在使用jQuery自动完成插件并连接了一个输入字段,以便在输入文本时从后端数据库中检索值,然后可以选择该文本。
然后我有一个第二个输入字段,我以类似的方式连接,但是我想在自动完成ajax调用中将第一个输入字段的值作为查询字符串参数传递,以便可以过滤自动完成结果。
我已经尝试使用第一个输入字段的.val()方法,但这似乎总是返回一个空字符串,除非我允许表单回发。我也尝试过使用getElementById('xxx')。value但这会返回一个空值
有什么方法可以检索在第一个字段中选择的动态值,这样我就可以将它传递给我对服务器的jQuery ajax调用了吗?
下面的代码,为简洁起见删除了一些代码:
<% 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>
<% } %>
$('input [name = Make]')。val()部分即使选择了一个,也总是返回空值。
我刚刚开始使用jQuery和MVC,所以我们将非常感谢任何帮助。
答案 0 :(得分:5)
您需要使用extraParams函数:
$("#Make").autocomplete(url, {
extraParams: {
yourValue: function() { return $("input[name=Make]").val(); }
}
});
然后,这将在HttpContext中传递给您的目标。
可以按如下方式取出:
string valueToUse = context.Request.QueryString["yourValue"];
来自jQuery AutoComplete Documentation:
通常一个自动填充字段取决于 关于另一个领域的价值。在那里面 case,extraParams选项可以 提供必要的动态 参数
您正在构建静态字符串时,您当前的代码无效。您需要使用一个动态返回您感兴趣的输入字段值的函数。