当客户填写表格时,我有一些jQuery来抑制回车:
$('form.eForm:not(.suppress-submit-on-enter-key-disabled) :not(:button, :submit)').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
但是,它还设法在我们的评论框中取消了回车。
添加textarea
检查器似乎很简单,就像现有代码必须检查:not(:button,:submit):
$('form.eForm:not(.suppress-submit-on-enter-key-disabled) :not(:button, :submit, :textarea)').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
糟糕! :not(:button,:submit,:textarea)无法正常工作,因为似乎没有为jQuery的这一部分定义textarea
。
其他人如何检测这些 TextArea 控件?
更新
在这里发布答案的人之一竟然得到了解决方案。
生成所有表单的eForm
类以某种方式捕捉到它。
我和我的经理花了几个小时的时间来解决这个问题,但最后我需要做的只是处理来自输入控件的事件。
以下是我们的最终结果:
$('form.eForm:not(.suppress-submit-on-enter-key-disabled) :input:not(:button, :submit, textarea)').keypress(function (e) {
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
特别感谢Khawer Zeshan提供小提琴。事实证明,我的代码存在更深层次的错误。
答案 0 :(得分:4)
为什么不将id
用于多个选择器的单textarea
和class
名称?
只有一个textarea
:
$('#textareaid').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
对于多个字段,请使用class name
并对这些字段应用相同的类:
$('.textareaClass').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
<强> FIDDLE 强>
答案 1 :(得分:1)
我最近有同样的顾虑,并为它创建了这个非常简单的jQuery插件