【发布时间】:2015-02-14 18:49:06
【问题描述】:
我有一个 JQuery UI 自动完成字段,可以在后台访问 Ruby 函数。在框中键入不会触发对服务器的调用以加载选项。但是,按下向下键会这样做,之后它就可以正常工作了。任何想法为什么会这样?
HTML
<div id="subject_select_dialog" class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; height: 141px; " scrolltop="0" scrollleft="0">
<input id="subject_select" name="subject" size="70" type="text" class="ui-autocomplete-input" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
<button id="subject_select_clear" name="button" type="clear">Clear</button>
...
</div>
JavaScript
$("#subject_select").autocomplete({
source: "/users/autocomplete",
minLength: 2,
focus: function( event, ui ) {
$( "#subject_select" ).val( ui.item.label );
return false;
},
select: function(event, ui) {
$("#subject_select").val( ui.item.label )
$("#subject_select_results").html( ui.item.label )
$("#subject_select_id").val( ui.item.value )
return false;
}
});
红宝石
def autocomplete
render :json => UserProfile.list_by_name(params[:term]).to_json
end
编辑:
检查生成的 HTML,它将我的字段标记为 Autocomplete="off"。当我在调试器中手动更改该值时,会出现正确的行为。为什么会用这样的属性来标记它,我该如何修复它?
【问题讨论】:
-
Firebug / 其他调试工具是否显示任何因键入而被触发的请求?该字段上是否还有其他
keypress/keyup/keydown处理程序可能会阻止此自动完成功能的工作? -
作为健全性检查,您至少输入了 2 个字符?
-
请修正您的 HTML,使其成为您的后端脚本实际生成的内容。
-
@jmoerdyk 是的。 @Madbreaks 这让我更直接地解决了真正的问题!显然它具有
Autocomplete="off"属性。将其更改为"on"会给我正确的行为。现在我想我需要弄清楚为什么它会关闭自动完成功能。将在新信息中进行编辑。 -
现在它可以正常工作了,即使我没有改变任何东西。 :\ 讨厌这样的虫子,因为它们会回来咬我。
标签: jquery jquery-ui autocomplete jquery-ui-autocomplete