当页面加载时,JQuery专注于第一个文本框或textarea

时间:2012-02-16 02:39:33

标签: jquery

我正在尝试编写一个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();

谢谢。

6 个答案:

答案 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