我有以下脚本:
$("#product1").autocomplete({
source: "get_sku_family",
messages: {
noResults: '',
results: function () {}
},
select: function (event, ui) {
var selectedObj = ui.item;
$.post('get_as_09',
{
data: selectedObj.value
},
function (result) {
if (result[0] > 0) {
$('#h09_1').attr('checked', 'checked');
} else {
$('#h09_1').removeAttr('checked');
}
}
});
}
});
这有一个自动填充字段,输入文本时会提供数据库中的选项。这很有效。然后单击自动完成中的选项,它会使用函数(get_as_09
)查询数据库,并根据结果检查复选框。
这再次100%有效。
我想要改变的是,当我在自动完成时输入新值时,必须先清除复选框,然后再应用新的数据库查找逻辑来检查框。
我只是不知道在哪里添加$('#h09_1').removeAttr('checked');
谢谢和问候......
任何帮助表示赞赏
更新 Ripu
if(data:selectedObj.value.length ==0 ){$('#h09_1').removeAttr('checked');};
$.post('get_as_09', {data:selectedObj.value},function(result) {
if(result[0] > 0) {
$('#h09_1').attr('checked','checked');
} else {
$('#h09_1').removeAttr('checked');
}
});
答案 0 :(得分:1)
在此行之前
$.post('get_as_09', {data:selectedObj.value},function(result) {
检查data:selectedObj.value的值是否为空。如果它是空的,那么您不需要发布帖子请求,只需取消选中复选框
即可答案 1 :(得分:0)
如果放在
之前怎么办? $.post('get_as_09', {data:selectedObj.value},function(result) {
所以,每次在你的$('#h09_1')中放入smth之前你都要清理它吗?
答案 2 :(得分:0)
尝试在更改事件的文本框中进行设置意味着当您在自动完成中输入新值时,请在那里清除您要检查的任何内容
答案 3 :(得分:0)
为什么不清除自动填写字段的on focus
复选框
以下是有关此活动的文档http://api.jqueryui.com/autocomplete/#event-focus
正如你所说,只需$('#h09_1').removeAttr('checked');
即可。
focus: function( event, ui ) {
$('#h09_1').removeAttr('checked');
}
答案 4 :(得分:0)
如果基于keypress事件在元素上附加事件侦听器怎么办?像这样:
$(selectedObj).one('keypress', function (e) {
var checkbox = $('#h09_1');
if (selectObj.val().length > 0) {
checkbox.attr('checked', false);
}
});
通过这种方式,您可以在清除之前知道有人在字段中输入内容。您可以在每次数据库查找后绑定事件侦听器。只是一个想法。