当元素在敲除“with”绑定中时,jQuery自动完成不会触发动作

Posted

技术标签:

【中文标题】当元素在敲除“with”绑定中时,jQuery自动完成不会触发动作【英文标题】:jQuery autocomplete not firing action when element is inside knockout "with" binding 【发布时间】:2017-10-07 06:01:09 【问题描述】:

我正在尝试使用 jquery UI 实现自动完成,但是自动完成文本框位于“with”敲除绑定内,因此 MVC 操作永远不会被触发。

<div data-bind="with: activeButton">
 //Some other div's...
  <div>
   <input type="text" id="autoCompleteText" data-autocomplete-url="@Url.Action("Autocomplete")"/>
  </div>
</div>

//On DOM ready
$('*[data-autocomplete-url]').each(function () 
      $(this).autocomplete(
          source: $(this).data("autocomplete-url")
      );
  );

当自动完成元素在“with”敲除绑定中时,我是否必须做一些不同的事情来触发 MVC 操作?

【问题讨论】:

你知道“data-autocomplete-url”中有一个空格吗?如果这在您的代码中,那么它可能会破坏它。 已修复。谢谢! 我的代码中没有。 【参考方案1】:

您将需要用于 jquery ui 自动完成的敲除绑定处理程序。类似的东西

<div data-bind="with: activeButton">
//Some other div's...
      <input type="text" id="autoCompleteText" data-bind='textInput: someSelectedValue, autoComplete:source: "@Url.Action("Autocomplete")" ' />
</div>

敲除绑定

ko.bindingHandlers.autoComplete = 
    init: function(element, valueAccessor) 
        var autoCompleteOptions = ko.unwrap(valueAccessor()); // Get the current value of the current property we're bound to
        $(element).autocomplete(autoCompleteOptions); 
    
;

【讨论】:

以上是关于当元素在敲除“with”绑定中时,jQuery自动完成不会触发动作的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 单选按钮组敲除绑定不起作用

使用 Jquery 加载填充 jquery ui 对话框时的敲除绑定

使用敲除的键盘导航

侧页敲除导致您不能多次将绑定应用于同一元素

如何使用 jquery 将文本框设为只读 [重复]

JQuery:当元素在视图中时触发动作