在下面的代码中,文本区域被添加了 6 次,最初文本区域包含文本 Enter Text。 我的问题是,如果用户在第一个和第三个文本区域中输入数据。 如何提醒用户说“文本区域是空的”这是一条一般消息,但关注第二个文本区域,当用户在第二个文本区域输入数据时,下一个文本区域应该被关注。
<script>
function ad_R(count)
{
//Adding and populating table row
var row = '<tr>';
row += '<td>';
row += '<textarea rows = "8" cols = "18" border ="0" class="input" style="border:none;overflow:visible;width:100%;" id="details'+count+'" nfocus="if (this.value == \'Enter text\') this.value = \'\';" onblur="if (this.value == \'\') this.value = \'Enter text\';" name ="detail'+count+'" class="row_details'+r_count+'">Enter text</textarea></td></tr>';
}
$(document).ready(function() {
cnt += '<table cellspacing="0" cellpadding="0" border="1" width="100%" id="_table">';
cnt += '<tr>';
cnt += '<th width="30%">Category</th>';
cnt += '</tr>';
for(var i=0;i<6;i++)
{
cnt += add_R(6);
}
cnt += '</table>';
});
最佳答案
一般来说,您应该摆脱那些内联处理程序,例如 onblur=
。
改为对所有这些事件使用 jQuery。例如
$('textarea').bind('focusout', function(e){
if($(this).val() == "")
alert('Textarea ' + this.id + ' is empty');
});
恐怕我没有完全理解你想要进一步做的事情,但我敢肯定 您可以使用一些处理程序来管理您的所有需求。
$('textarea').bind('keydown', function(e){
var $next = $(this).next('textarea');
if($next) $next.focus();
});
会跳转到下一个文本区域(即使我不知道为什么)
编辑
由于您正在动态添加这些文本区域,因此您可能应该使用 .live()
或
甚至更好的 .delegate()
来绑定(bind)那些事件处理程序。
关于jquery - 聚焦文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605333/