Javascript 如何防止在web窗体中按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

我想按回车键提交表格。 但它也改变了内容的界线。 如何预防

这是我的代码,但当按ENTER键时。。。运行并将光标移动到下一行:

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键?因为我希望用户输入大量内容,但宽度有限。因为我希望用户输入大量内容,但宽度有限。不客气!你应该把代码带到现在:)不客气!您应该将代码转移到现在:)