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');

谢谢并恭祝安康...

任何帮助表示赞赏

更新日普

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');
      }
 }); 
4

5 回答 5

1

在这条线之前

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

检查 data:selectedObj.value 的值是否为空。如果为空,则不需要发出 post 请求,只需取消选中复选框即可

于 2013-04-19T07:44:40.953 回答
0

如果你根据 keypress 事件在元素上附加一个事件监听器怎么办?像这样的东西:

$(selectedObj).one('keypress', function (e) {
    var checkbox = $('#h09_1');

    if (selectObj.val().length > 0) {
        checkbox.attr('checked', false);
    }

});

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

于 2013-04-19T15:26:46.150 回答
0

如果你把之前

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

所以每次在你把 smth 放进你的 $('#h09_1') 之前你都要清理它吗?

于 2013-04-19T07:43:28.653 回答
0

尝试在 texbox 上进行更改事件意味着当您在自动完成中输入新值时,请在此处清除您要检查的任何内容

于 2013-04-19T07:45:05.873 回答
0

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

正如你所说,一个 $('#h09_1').removeAttr('checked');就足够了。

focus: function( event, ui ) {
    $('#h09_1').removeAttr('checked');
}
于 2013-04-19T07:46:40.590 回答