我在一个表单上有两个jQueryUI Autocomplete。一个以另一个为食。我的目标是让第一个字段自动完成并将ID填充到(打算是)隐藏字段。第二个自动完成是对远程页面进行Ajax调用,并从第一个自动完成中传递ID。
这主要是有效的。第一个自动完成工作正常,它使用适当的值填充companyID字段。
我的问题是第二个自动完成总是将值0传递给Ajax请求的页面。就好像第二次自动完成中对源的调用返回的.val()没有正确读取companyID字段的值。
为了让事情变得更加疯狂,我在社区字段发生变化时调用alert(),并报告正确,准确的companyID! 哎呀!
我的jQuery:
<script>
$(document).ready(function() {
var Companies = [
{ label: 'America First Properties', value: '6' },
{ label: 'Western National Group', value: '7' },
{ label: 'Greystar Property Management', value: '8' },
]
$('#Company').autocomplete({
autoFocus: true,
delay: 0,
minLength: 2,
source: Companies,
select: function(event,ui) {
$('#companyID').val(ui.item.value);
$('#Company').val(ui.item.label);
$('#Community').val('');
return false;
},
change: function(event,ui) {
}
});
$('#Community').autocomplete({
autoFocus: true,
delay: 200,
minLength: 2,
select: function(event,ui) {
$('#communityID').val(ui.item.value);
$('#Community').val(ui.item.label);
return false;
},
change: function(event,ui) {
alert("The value of the company ID field is: " + $('#companyID').val());
},
source: '/Community/ajax_getCommunities.cfm?companyID=' + $('#companyID').val()
});
});
</script>
我的HTML:
<form name="addCommunityform" id="addCommunityform" action="act_addCommunity.cfm" method="post">
<fieldset>
<label>Intended to be Hidden Fields:</label>
<label>companyID:</label>
<input type="text" name="companyID" id="companyID" value="0">
<label>communityID:</label>
<input type="text" name="communityID" id="communityID" value="0">
</fieldset>
<fieldset>
<label for="Company">Property Management Company:</label>
<input type="text" name="Company" id="Company" value="">
</fieldset>
<fieldset>
<label for="Community">Community Name:</label>
<input type="text" name="Community" id="Community" value="">
</fieldset>
</form>
任何人都对为什么这个.val()不起作用有任何想法?
答案 0 :(得分:4)
您需要使用函数而不是字符串作为自动填充的源代码:
$('#Community').autocomplete({
autoFocus: true,
delay: 200,
minLength: 2,
select: function(event,ui) {
$('#communityID').val(ui.item.value);
$('#Community').val(ui.item.label);
return false;
},
change: function(event,ui) {
alert("The value of the company ID field is: " + $('#companyID').val());
},
source: function (request, response) {
$.ajax({
url: '/Community/ajax_getCommunities.cfm?companyID=' + $('#companyID').val(),
data: request,
success: response,
error: function () {
response([]);
},
dataType: 'json'
});
}
});
由于#companyId
的值正在发生变化,因此在初始化#Community
自动填充功能时选择它不会起作用。提供函数作为源使您可以在每次发出请求时重新查询公司Id的DOM。