我正在尝试编写一个JQuery,以便在页面加载时专注于第二个表单中的第一个可见,启用文本框或textarea。在下面的示例中,请关注 form2 中的输入 text2 。
jQuery Dynamically focus on the first INPUT or Textarea中提出的解决方案对我不起作用。
请注意,我们的申请表中有多个页面。在某些页面中,表单的第一个字段是文本框,而在其他页面中,第一个字段是文本区域。我想写一个JQuery方法,它将为所有页面完成工作,无论第一个字段是文本框还是文本区域。在下面的示例中,如果我们交换 textarea1 和 text2 字段,解决方案应该有效。
<div id="header">
<form name="form1">
<input type="text" name="text1">
</form>
</div>
<div id="content">
<form name="form2">
<input type="checkbox" name="chc" value="test"><br>
<input type="hidden" name="hide">
<input type="text" name="text2"><br>
<textarea name="textarea1"></textarea><br>
<input type="text" name="text3">
</form>
</div>
这是我到目前为止所尝试的......
// throws the error - $("#content input:text, #content textarea").first is not a function
$("#content input:text, #content textarea").first().focus();
// focuses on the textarea even if a text box is the first element in the form
$("#content textarea, #content[type='text']:visible:enabled:first").focus();
// focuses on the last text box in the page!
$("#content :input[type='text'], :textarea:visible:enabled:first").focus();
// focuses on the first text box even if a textarea is the first element in the form
$("#content :input[type='text']:visible:enabled:first, :textarea:visible:enabled:first").focus();
// focuses on the checkbox as it is the first input element
$('#content :input:visible:enabled:first').focus();
谢谢。
答案 0 :(得分:9)
$("#content input:text, #content textarea").eq(0).focus()
答案 1 :(得分:3)
这里你需要的是:
$(function(){
$('form[name=form2]').find(':text, textarea').filter(":visible:enabled").first().focus();
})
示例here
答案 2 :(得分:1)
<script type="text/javascript">
$(document).ready(function() {
// focus on the first visible and enabled input field or textarea
$(":input:visible:enabled").each(function() {
if (($(this).attr('type') == 'text') && ($(this).is('input'))){
$(this).focus();
return false;
}
if ($(this).is('textarea')){
$(this).focus();
return false;
}
});
});
</script>
答案 3 :(得分:1)
如果您使用Raphael Verger解决方案,它也可能是密码,所以:
$(function(){
$('form[name=form2]').find(':text, textarea, :password').filter(":visible:enabled").first().focus();
})
答案 4 :(得分:0)
您应该使用DOM元素而不是jQuery对象,如下所示:
$("#content input:text")[0].focus()
答案 5 :(得分:0)
//抛出错误 - $(“#content input:text,#content textarea“)。首先不是函数$(”#content input:text,#content 文本区域“)第一()聚焦();
这应该可以正常工作。检查在JQuery 1.4上添加的JQuery版本first method