Javascript 如何防止在web窗体中按ENTER键更改行
我想按回车键提交表格。 但它也改变了内容的界线。 如何预防 这是我的代码,但当按ENTER键时。。。运行并将光标移动到下一行:Javascript 如何防止在web窗体中按ENTER键更改行,javascript,Javascript,我想按回车键提交表格。 但它也改变了内容的界线。 如何预防 这是我的代码,但当按ENTER键时。。。运行并将光标移动到下一行: function postmessage(e) { if(e) { e.preventDefault = null || e.preventDefault; if(e.preventDefault) { e.preventDefault(); } else { e.r
function postmessage(e) {
if(e) {
e.preventDefault = null || e.preventDefault;
if(e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
....
return false;
}
function submitmessage(e) {
if(e.keyCode == 13) {
postmessage(e);
}
return false;
}
function bindEvent(el, eventName, eventHandler) {
if (el.addEventListener){
el.addEventListener(eventName, eventHandler, false);
} else if (el.attachEvent){
el.attachEvent('on'+eventName, eventHandler);
}
}
bindEvent(text, 'keydown', submitmessage);
虽然我完全同意@Peter的观点,因为这将创建一个非常尴尬和烦人的用户体验,但以下是如何在代码方面实现它:在
键下捕获事件,并使用event.preventDefault()
跳过换行符。然后手动提交表单
大概是这样的:
var el = document.getElementById('#my_textarea');
if (el.addEventListener)
{
el.addEventListener('keydown', checkEnter(event), false);
}
else if (el.attachEvent){
el.attachEvent('keywodn', checkEnter(event));
}
function checkEnter(event)
{
var charCode = (event.which) ? event.which : event.keyCode
// Enter key
if(charCode == 13) {
event.preventDefault();
document.myform.submit();
return false;
}
}
MDN文档:
虽然我完全同意@Peter的观点,因为这将创造一种非常尴尬和烦人的用户体验,但以下是如何在代码方面实现它:在键下捕获事件,并使用event.preventDefault()
跳过换行符。然后手动提交表单
大概是这样的:
var el = document.getElementById('#my_textarea');
if (el.addEventListener)
{
el.addEventListener('keydown', checkEnter(event), false);
}
else if (el.attachEvent){
el.attachEvent('keywodn', checkEnter(event));
}
function checkEnter(event)
{
var charCode = (event.which) ? event.which : event.keyCode
// Enter key
if(charCode == 13) {
event.preventDefault();
document.myform.submit();
return false;
}
}
MDN文档:
通常,在浏览器的默认行为上乱动是个坏主意。就我个人而言,如果我在没有对提交的数据进行适当审查的情况下输入一些文本,点击回车键,然后砰的一声,我会讨厌它的
如果您不希望人们在文本区域中输入多行,为什么不将其设置为常规文本框(
)?一般来说,使用浏览器的默认行为是不好的。就我个人而言,如果我在没有对提交的数据进行适当审查的情况下输入一些文本,点击回车键,然后砰的一声,我会讨厌它的
如果您不希望人们在文本区域中输入多行,为什么不将其设置为常规文本框(
)?e.stopPropagation();已停止默认操作。e.stopPropagation();已停止默认操作。您所说的“内容中的更改行”是什么意思?您的意思是,当在
内按时,它会向下移动一行或其他内容?您意识到用户仍然可以在textarea元素中粘贴回车、新行和换行,而无需按enter键?您的意思是“更改内容中的行”?你的意思是当在
内按时,它会向下移动一行,或者其他什么?你意识到用户仍然可以粘贴回车,在textarea元素中添加新行和换行,而不按enter键?因为我希望用户输入大量内容,但宽度有限。因为我希望用户输入大量内容,但宽度有限。不客气!你应该把代码带到现在:)不客气!您应该将代码转移到现在:)