我表单中的所有输入都是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
}
});
答案 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元素。