jQuery 移动自动完成不会自我更新

Posted

技术标签:

【中文标题】jQuery 移动自动完成不会自我更新【英文标题】:jQuery mobile autocomplete is not updating itself 【发布时间】:2015-06-26 12:26:33 【问题描述】:

我是 jQuery 和 jQuery mobile 的新手。

我正在尝试使自动完成字段正常工作。到目前为止,我所拥有的几乎都是从 http://demos.jquerymobile.com/1.4.5/listview-autocomplete-remote/ 的演示中摘录的

$( document ).on( "pagecreate", "#foo", function() 
$( "#autocomplete" ).on( "filterablebeforefilter", function ( e, data ) 
    var $ul = $( this ),
        $input = $( data.input ),
        value = $input.val(),
        html = "";
    $ul.html( "" );
    if ( value && value.length > 2 ) 
        $ul.html( "<li><div class=\'ui-loader\'><span class=\'ui-icon ui-icon-loading\'></span></div></li>" );
        $ul.listview( "refresh" );
        $.ajax(
            url: "/cgi/perl_script.pl",
            data: \'search=\' + value,
            dataType: "json",
            traditional: true
        )
        .then( function ( response ) 
            $.each( response, function ( i, val ) 
                alert(JSON.stringify(val));
                html += "<li>Just a test</li>";
            );
            $ul.html( html );
            $ul.listview( "refresh" );
            $ul.trigger( "updatelayout");
        );
    
);
);

我已确认 js 警报返回了 json 数据。这一切都完美无缺。如果我的 perl 脚本返回 3 条 json 记录,我会收到三个带有字符串化 JSON 的警报。

但是,即使我在尝试调试问题时使用代码中显示的简单“只是一个测试”字符串,小部件也不会显示记录。

这里是相关的html代码:

  <div role="main" class="ui-content">
    <form class="ui-filterable">
      <input id="autocomplete-input" data-type="search" placeholder="Last name">
    </form>
  <ul id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-input="#autocomplete-input"></ul>

【问题讨论】:

好的,如果我在$ul.html( html );这行之后弹出一个警告对话框,我可以看到选项弹出。当我关闭警报对话框时,选项也会消失。 我快接近了。我将实际值放入 元素中,它开始工作。不知道为什么。但是,我无法选择任何选项。我只是单击,没有任何反应。 好的,我知道我必须为小部件添加一个事件处理程序以检测它何时被更改。 【参考方案1】:

答案见原帖的cmets。

【讨论】:

不要引用,请在此处添加内容。

以上是关于jQuery 移动自动完成不会自我更新的主要内容,如果未能解决你的问题,请参考以下文章

devbridge ajax 自动完成不会更新建议列表

使用 JSONP 的 Jquery 移动自动完成

如何在jquery移动自动完成中获取所选列表数据的ID

JQuery自动完成源不更新

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

jQuery自动完成列表位置更改