是否有可能在所有其他人完成后执行一个jQuery ready块。
我在母版页中有这个...
<script type="text/javascript">
$(document).ready(function()
{
$("input[type='text']:enabled:first", document.forms[0]).focus().select();
});
</script>
这是我的其他一页......
<script type="text/javascript">
$(document).ready(function()
{
$('textarea.message-body').wysiwyg();
});
</script>
我看到的问题是第一个块在第二个块之前执行,这导致tab键出现问题。发生的事情是,当我按Tab键时,键盘焦点会转到浏览器中的地址栏。我已稍微更改了代码,以便在我的母版页中显示...
<script type="text/javascript">
$(document).ready(function()
{
var bodies = $('textarea.message-body');
if (bodies.length > 0)
{
bodies.wysiwyg();
}
$("input[type='text']:enabled:first", document.forms[0]).focus().select();
});
</script>
完全取消另一个就绪块。这样做可以使Tab键正常工作,并将焦点设置到我的textarea上。
我宁愿在母版页中没有特定于页面的代码。
那么,有没有办法让我的文本框聚焦代码在wysiwyg代码之后运行?
答案 0 :(得分:9)
$(window).load()
函数在$(document).ready()
答案 1 :(得分:8)
在您的母版页中添加custom event触发器:
<script type="text/javascript">
$(document).ready(function()
{
$('textarea.message-body').wysiwyg();
$(document).trigger('tb');
});
</script>
并将其绑定到其他页面:
<script type="text/javascript">
$(document).bind('tb', function(){
$("input[type='text']:enabled:first", document.forms[0]).focus().select();
});
</script>
<强>参考强>
答案 2 :(得分:2)
这是我采用的解决方案。
在我的母版页中,我有这个......
<script type="text/javascript">
<!--
$(document).ready(function()
{
if (typeof (OnLoad) != "undefined")
{
OnLoad();
}
$("input[type='text']:enabled:first", document.forms[0]).focus().select();
});
//-->
</script>
在我的详细信息页面中,我有这个...
<script type="text/javascript">
<!--
function OnLoad()
{
$('textarea.message-body').wysiwyg();
}
//-->
</script>
答案 3 :(得分:1)
只有你只在主页上注册一个document.ready(),然后让那个基于变量执行代码?这个解决方案不是那么优雅,但搜索JavaScript线程同步并没有真正改变任何东西。
您可以将母版页上的代码更改为:
<script type="text/javascript">
var runWysiwyg = false;
$(document).ready(function()
{
if (runWysiwyg) {
$('textarea.message-body').wysiwyg();
}
$("input[type='text']:enabled:first", document.forms[0]).focus().select();
});
</script>
并将此脚本放在您的页面中:
<script type="text/javascript">
runWysiwyg = true;
</script>