jquery mobile和knockoutjs输入类型搜索绑定问题

时间:2013-05-08 05:09:15

标签: knockout.js

我看到knockoutjs和jquery mobile存在一个奇怪的问题,如果输入类型设置为搜索,则绑定失败,对于相同的代码,如果输入类型设置为text,则绑定成功。关于如何解决这个问题的任何想法?

<form data-bind="jqmsubmit: search" >                   
  <input data-theme="b" name="search" id="search" type="search" data-bind="value: searchTerm"></input>
</form> 
使用上面的代码

当我在文本框中输入并按回车键时,不会更新searchTerm。如果我将input元素更改为type =“text”,则searchTerm会按预期更新。

2 个答案:

答案 0 :(得分:0)

输入type="search"不会触发change事件,而是触发serach事件。

因此,您需要订阅search事件,您可以使用valueUpdate绑定的value设置

<form data-bind="jqmsubmit: search" >                   
  <input data-theme="b" name="search" id="search" type="search" 
         data-bind="value: searchTerm, valueUpdate: ['search']">  
  </input>
</form>

答案 1 :(得分:0)

我遇到了同样的问题。我认为这个问题与jQuery Mobile如何用 text 输入元素替换HTML格式不同的搜索输入元素有关。这种解决方法适用于我:

<input type="search" 
       onkeyup="ko.contextFor(this).$data.searchTerm(this.value);"
       onchange="ko.contextFor(this).$data.searchTerm(this.value);"
       placeholder="Search" />