我在设置文本字段值时遇到问题,然后再次使用jquery。
我有两个输入字段,我正在使用jQuery自动完成:
<input type="text" name="AccountName" id="AccountName" size="50">
<input type="text" id="NewAccountId" name="NewAccountId" value="0">
当我为此字段调用自动填充时,它会将帐户ID输入NewAccountId字段。我知道那很有意义;你可以在屏幕上看到它。代码是:
$(function()
{$("#AccountName").autocomplete({
source: "../cfc/ajax_code.cfc?method=AccountSearchId",
minLength: 2,
select: function(event, ui) {
$('#NewAccountId').val(ui.item.custid);
ContactListUpdate(this.MyCustId);} }); });
当我转到下一个字段时,我通过自动完成功能再次调用数据库。
<input type="text" name="TransactionName" id="TransactionName" size="20">
jquery函数是:
$(function()
{$("#TransactionName").autocomplete({
source: "../cfc/ajax_code.cfc?method=TransactionLookUp&MyCustomerId="+$("#NewAccountId").val(),
minLength: 2,
select: function(event, ui) {
$('#MyTransactionId').val(ui.item.transid);} }); });
所以这是我的问题......
当我获得我的帐户名称时,它实际上在NewAccountId字段中设置了我的ID。但是,当我运行事务自动完成时,它从NewAccountId字段(通常是&#34; 0&#34;)获取原始加载值,而不是第一个函数的值。我知道代码有效,因为在FireFox中如果我使用NewAccountId字段中的值刷新表单,代码将使用该值来过滤我的事务ID。
在搜索帮助网站2天后,我发现最接近的答案是布尔脏标志值没有变化,但还没有找到如何覆盖它。我尝试使用以下选项更新字段,但无济于事:
this.MyCustId = $("#NewAccountId").val();
document.getElementById('NewAccountId').setAttribute('value',this.MyCustId);
或
this.MyCustId = $("#NewAccountId").val();
document.getElementById('MyTestId').value = this.MyCustId;
这两个选项都设置字段值,但不会更改原始字段值。
并且要添加侮辱伤害,正如您在第一个自动完成功能中看到的那样,我调用ContactListUpdate javascript - 而不是jquery - 函数。这会调用更新,以更改选择列表中的联系人。它使用新的帐户ID。有用!
此外,在我提交表单后,数据字段中的值正是我想要的。当我调用脚本来获取事务时它才起作用。
HELP!有什么想法吗?
感谢。
答案 0 :(得分:0)
在第一个回调中设置第二个自动完成。试试这个:
$(function () {
function setAutoComplete() {
$("#TransactionName").unbind();
$("#TransactionName").autocomplete({
source: "../cfc/ajax_code.cfc?method=TransactionLookUp&MyCustomerId=" + $("#NewAccountId").val(),
minLength: 2,
select: function (event, ui) {
$('#MyTransactionId').val(ui.item.transid);
}
});
}
$("#AccountName").autocomplete({
source: "../cfc/ajax_code.cfc?method=AccountSearchId",
minLength: 2,
select: function (event, ui) {
$('#NewAccountId').val(ui.item.custid);
ContactListUpdate(this.MyCustId);
setAutoComplete();
}
});
});
答案 1 :(得分:0)
在TransactionName字段上检测自动完成的代码在页面就绪时执行。那时NewAccountId字段的值始终为0
,因此您为“source”选项提供的字符串始终包含0
。
您需要为“source”选项提供回调函数,该函数将在执行自动完成时调用。
尝试:
$("#TransactionName").autocomplete({
source : function(request, response) {
$.get("../cfc/ajax_code.cfc", {
term: request.term,
method: "TransactionLookUp",
MyCustomerId: $("#NewAccountId").val()
}, function(data) { response(data); });
},
minLength: 2,
select: function(event, ui) {
$('#MyTransactionId').val(ui.item.transid);
}
});