Jquery清除复选框更改自动完成字段

jquery clear checkboxes on changing autocomplete field

本文关键字:字段 清除 复选框 Jquery      更新时间:2023-09-26

我有以下脚本:

$("#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');

Thanks and Regards…

感谢您的帮助

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) { 

检查data:selectedObj的值。Value为空。如果它是空的,那么您不需要发出post请求,只需取消选中

复选框

试着把它放在文本框上更改事件意味着当你在自动完成中输入新值时把它放在那里以清除任何你想要的东西检查

为什么不清除自动完成字段的复选框on focus呢?
以下是关于此事件的文档http://api.jqueryui.com/autocomplete/#event-focus

就像你说的,只要一个$('#h09_1').removeAttr('checked');就足够了。

focus: function( event, ui ) {
    $('#h09_1').removeAttr('checked');
}

如果在

   $.post('get_as_09', {data:selectedObj.value},function(result) { 

所以每次在你把SMTH放入$('#h09_1')之前,你都会清理它吗?

如果在元素上附加一个基于按键事件的事件侦听器会怎样?像这样:

$(selectedObj).one('keypress', function (e) {
    var checkbox = $('#h09_1');
    if (selectObj.val().length > 0) {
        checkbox.attr('checked', false);
    }
});

这样在你清空字段之前你就知道有人在输入。您可以在每次数据库查找之后绑定事件侦听器。这只是一个想法。