【发布时间】:2009-12-26 03:16:02
【问题描述】:
在过去的 7 个小时里我一直在努力让它工作,所以请原谅我有点沮丧。
我已经成功实现了一组很好的 jquery ui 选项卡,它们通过 ajax 加载它们的内容。
通过 ajax 加载的内容具有表单。我希望在加载选项卡时自动聚焦表单中的第一个字段(其 ID 为#title)。当我尝试将脚本放入外部文档时这不起作用,所以我认为回调是个好主意。
setTimeout( function() { $("#title").focus(); }, 500 );
我从here 得到这个想法。延迟是因为我在单击每个选项卡时遇到了字段无法正确聚焦的问题。起初我认为这已经解决了一些问题,但经过更多测试我发现这个焦点字段仅适用于最初加载的选项卡。
我决定清醒一下,实施nice jquery autocomplete text field.
当直接加载到外部内容中时,该脚本似乎可以工作,但令我沮丧的是,进一步的测试表明情况并非如此。 自动完成字段仅适用于页面加载时加载的选项卡。
这时我注意到我的两个脚本只在初始加载的选项卡上运行的模式。
我尝试过使用选择、加载和显示事件,但都无法正常工作。
我知道回调正在工作,因为单击每个选项卡时都会出现警报。
显然我做错了什么。
请分解我的代码并告诉我我做错了什么。
<script type="text/javascript">
$(function() {
$("#tabs").tabs({
load: function(event, ui) { setTimeout( function() { $("#title").focus(); }, 500 );
$("#role").autocomplete(
"/profile/autocomplete",
{
delay:10,
minChars:1,
matchSubset:1,
matchContains:1,
cacheLength:10,
onItemSelect:selectItem,
onFindValue:findValue,
formatItem:formatItem,
autoFill:true
}
);
alert('callback');
}
});
});
</script>
【问题讨论】:
-
#title和#role在标签内吗? -
您好,是的,#title 和 #role 是通过 ajax 内容加载的。我实际上并不完全理解回调的作用,但我听说它们是一件好事,当我尝试从选项卡中访问它们时脚本不起作用......
-
回调是安排在其他事件发生后发生的操作的正确方法。这对 ajax 代码非常有用,其中一个常见错误是 load_foo_via_ajax();使用_foo();因为这两个调用将同时发生,而第二段代码可能会因为 foo 尚未加载而失败。
标签: jquery jquery-ui jquery-autocomplete