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,不客气。它最终对你有用吗?还有什么问题吗?没有,根本没用。如上所述,如果语法与所讨论的更新一致,则不会触发自动完成。如果可以,请检查并提出建议。谢谢。我试过了,但是在点击新的自动完成后,检查就不会发生了?这会防止复选框在被取消选中后被选中吗?似乎应用了删除检查,然后跳过了下一个结果的处理?谢谢,聚焦不起作用,因为如果他们不更改值,就聚焦它会怎么样?