javascript / jquery:按下选项卡时,在表单中聚焦下一个textarea(不是输入字段)

时间:2013-01-01 04:38:20

标签: javascript jquery forms tabs next

我表单中的所有输入都是textarea,内容为large

我正在尝试以下但不起作用:

if(e.which == 9){ // tab
    $(this).next('textarea.large').focus();
}

我试过了 $next = $(":textarea:eq(" + ($(":textarea").index(this) + 1) + ")"); $next.focus();
无效(:textarea不是一个有效的伪元素),以及其他一些变化。

我也试过这个:

$(this).next(':input').focus();

我已经在SO上检查了其他代码,但它似乎专注于input type='text',并且似乎不适用于我的textareas。

是否没有简单直观,跨浏览器兼容的方式来获取我表单中的所有textareas并转到下一个?其中一些textareas将被动态创建,因此它们不会在第一次加载页面时全部存在。但是tab需要适用于所有这些。

修改

这很容易在一个简单的小提琴中解决,但问题是,我在以下条件和事件中发生了一些其他事情:

jQuery(document).on('keydown blur','textarea.large',function(
 if (e.which == 13 || e.type=='focusout' || e.type=='blur' || e.which == 32) //32 is space
 { ... a bunch of stuff on the page, which naturally takes focus out of the current input
  }
});

2 个答案:

答案 0 :(得分:1)

我有一个类似的问题,使用next()来选择最靠近编辑按钮的下一个textarea。编辑图像时,单击带有CKEDITOR的对话框弹出文本,文本取自textarea。

html结构:

<tr>
    <td>
        <img src='edit.png' class='edit_comments' />
        <br />
        <textarea>blah blah</textarea>
    </td>
</tr>
<tr>
    <td>
        <img src='edit.png' class='edit_comments' />
        <br />
        <textarea>blah blah</textarea>
    </td>
</tr>

这不起作用:

$( ".edit_comments" ).click(function() {
        var closest_textarea = $(this).next("textarea");

这样做了:

$( ".edit_comments" ).click(function() {
        var closest_textarea = $(this).closest("tr").find("textarea");

答案 1 :(得分:0)

您可以将tabindex属性设置为input和textarea元素。

http://w3schools.com/tags/att_global_tabindex.asp