jquery javascript-清除更改自动完成字段的复选框
我有以下脚本:jquery javascript-清除更改自动完成字段的复选框,javascript,jquery,Javascript,Jquery,我有以下脚本: $("#product1").autocomplete({ source: "get_sku_family", messages: { noResults: '', results: function () {} }, select: function (event, ui) { var selectedObj = ui.item; $.post('get_as_0
$("#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');
}
});
如果你把它放在
$.post('get_as_09', {data:selectedObj.value},function(result) {
所以每次在你把smth放进美元('h09_1')之前,你都要把它清理干净吗?在这一行之前
$.post('get_as_09', {data:selectedObj.value},function(result) {
检查data:selectedObj.value的值是否为空。如果它是空的,那么您不需要发出post请求,只需取消选中复选框即可。尝试在texbox on change事件中设置它意味着当您在auto complete(自动完成)中输入新值时,将其设置为清除您想要的任何内容复选框。为什么不清除auto complete(自动完成)字段焦点上的复选框。
以下是有关此事件的文档
正如你刚才所说的,$('h09_1')。removeAttr('checked')代码>应该足够了
focus: function( event, ui ) {
$('#h09_1').removeAttr('checked');
}
如果基于keypress事件在元素上附加一个事件侦听器会怎么样?大概是这样的:
$(selectedObj).one('keypress', function (e) {
var checkbox = $('#h09_1');
if (selectObj.val().length > 0) {
checkbox.attr('checked', false);
}
});
这样,在清除字段之前,您就知道有人在字段中键入。可以在每次数据库查找之后绑定事件侦听器。只是一个想法。尝试使用onblur事件感谢ripu1581,您能进一步提供帮助吗。我在你提到的行之前尝试了if({data:selectedObj.value}=0){$('h09_1')。removeAttr('checked');}
,但失败了。@Smudger不应该是如果(data:selectedObj.value.length==0){//remove checked}感谢Ripu,这可以防止自动完成触发。请参阅关于我使用的语法的更新问题。谢谢。@Smudger,不客气。它最终对你有用吗?还有什么问题吗?没有,根本没用。如上所述,如果语法与所讨论的更新一致,则不会触发自动完成。如果可以,请检查并提出建议。谢谢。我试过了,但是在点击新的自动完成后,检查就不会发生了?这会防止复选框在被取消选中后被选中吗?似乎应用了删除检查,然后跳过了下一个结果的处理?谢谢,聚焦不起作用,因为如果他们不更改值,就聚焦它会怎么样?