将焦点设置为dynamic加载的DIV中的字段
什么是适当的方法来设置焦点到一个dynamic加载的DIV内的特定领域?
$("#display").load("?control=msgs"); // loads the HTML into the DIV $('#display').fadeIn("fast"); // display it $("tex#header").focus(); // ?? neither that $("input#header").focus(); // ?? nor that $('#display', '#header').focus() // ?? nor that $("#header").focus(); // ?? nor that works
以下HTML被提取到display
DIV中:
<div id="display"> <form id="newHeaderForm" class="dataform" action="/" method="post"> <input id="to" type="hidden" value="22" name="to"/> <dl> <dt>Header</dt> <dd> <input id="header" class="large" type="text" name="header" value="" maxlength="128"/> </dd> </form> </div>
非常感谢!
load()函数是一个asynchronous函数。 您应该在load()调用完成后设置焦点,即在load()的callback函数中,否则由#header引用的元素不存在。 例如:
$("#display").load("?control=msgs", {}, function() { $('#header').focus(); });
即使使用这个解决scheme,我也遇到了问题,所以我在callback函数中设置了setTimeout,并在超时时设置焦点,以确保元素的存在。
你有没有尝试简单的selectID?
$("#header").focus();
由于Ids应该是唯一的,所以不需要更具体的select器。
是的,在操作一个还不存在的元素的时候会发生这种情况(这里的一些贡献者也提供了唯一的ID)。 我遇到了类似的问题。 我还需要传递一个参数来处理即将渲染的元素。
在这里检查的解决scheme并没有帮助我。 最后,我发现一个开箱即用的工具。 它也非常漂亮 – closures。
代替:
$( '#header' ).focus(); or the tempting: setTimeout( $( '#header' ).focus(), 500 );
尝试这个:
setTimeout( function() { $( '#header' ).focus() }, 500 );
在我的代码中,testing传递参数,这不起作用,超时被忽略:
setTimeout( alert( 'Hello, '+name ), 1000 );
这工作,超时滴答声:
setTimeout( function() { alert( 'Hello, '+name ) }, 1000 );
这很糟糕,w3schools没有提到它。
积分转到: makemineatriple.com 。
希望这有助于来到这里的人。
Martas
$("#display").load("?control=msgs", {}, function() { $('#header').focus(); });
我尝试过,但它不起作用,请给我更多的build议来解决这个问题。 谢谢你的帮助
如果
$("#header").focus();
不工作,那么你的页面上的另一个元素的标题的ID?
使用萤火虫运行$("#header")
,看看它返回。
正如Omu所指出的那样,您必须在文档就绪function中设置焦点。 jQuery为您提供。 并select一个ID。 例如,如果您有login页面:
$(function() { $("#login-user-name").focus(); }); // jQuery rocks!
这在页面加载运行。
<script type="text/javascript"> $(function () { $("#header").focus(); }); </script>
dynamic添加的项目必须添加到DOM … clone().append()
将其添加到DOM …它允许通过jqueryselect它。
$("#header").attr('tabindex', -1).focus();
$(function (){ $('body').on('keypress','.sobitie_snses input',function(e){ if(e.keyCode==13){ $(this).blur(); var new_fild = $(this).clone().val(''); $(this).parent().append(new_fild); $(new_fild).focus(); } }); });
大部分错误是因为使用错误的对象来设置prorepty或函数。 使用console.log(new_fild); 看哪个对象试图设置prorepty或函数。
如果你正在加载另一个页面/视图到你刚刚添加的div
$(document).ready(function(){ $("#header").focus(); });
您需要加载的页面 所以,当该页面加载时,它会自动设置该div的焦点。