2013-12-23 264 views
0

在textarea的当用户按下Shift + Enter键那么就应该继续下一个新行,当他只需按下输入应该提交表单,而无需使用提交按钮。textarea的Shift + Enter键下一行和回车键提交表单

这里是Fiddle!!

我已经浏览了很多,但不帮我,详细解释赞赏 请帮助我!

代码

$('commenttextarea').keyup(function (event) { 
    if ( event.shiftKey && event.keyCode == 13) { 
     var content = this.value; 
     var caret = getCaret(this); 
     this.value = content.substring(0,caret)+"\n"+content.substring(carent,content.length-1); 
     event.stopPropagation(); 

    }else if(event.keyCode == 13) 
    { 
     $('commentform').submit(); 
    }}); 
+0

可能dublicate [此](http://stackoverflow.com/questions/6014702/how-do-i-detect-shiftenter-and-generate-a-new-line-in-textarea) – Oli

+0

@Oli是的,但这并没有解决我的问题。 – stacky

回答

4

首先,你错过了加载任何jQuery的版本

其次,textareaform selectors之前错过#

还可以使用caretcarent符合

this.value = content.substring(0,caret)+"\n"+content.substring(caret,content.length-1); 
          // ----------------------------------^ 

全码

function getCaret(el) { 
    if (el.selectionStart) { 
     return el.selectionStart; 
    } else if (document.selection) { 
     el.focus(); 
     var r = document.selection.createRange(); 
     if (r == null) { 
      return 0; 
     } 
     var re = el.createTextRange(), 
      rc = re.duplicate(); 
     re.moveToBookmark(r.getBookmark()); 
     rc.setEndPoint('EndToStart', re); 
     return rc.text.length; 
    } 
    return 0; 
} 
$('#commenttextarea').keyup(function (event) { 
    if (event.shiftKey && event.keyCode == 13) { 
     var content = this.value; 
     var caret = getCaret(this); 
     this.value = content.substring(0, caret) + "\n" + content.substring(caret, content.length - 1); 
     event.stopPropagation(); 
    } else if (event.keyCode == 13) { 
     $('#commentform').submit(); 
    } 
}); 

this会工作

+0

Rohan kumar!小提琴需要jQuery版吗? ,我会尝试你的第二个建议。 – stacky

+0

是的,** Fiddle **本身不会添加任何'library'或'framework'。 –

+0

@Fastnto如果你想在jsFiddle中使用jQuery,那么你需要在jsFiddle左边的下拉列表中选择一个版本的jQuery,它说'No-Library(纯JS)'。 – Ignitor

0

正如Rohan Kumar说:你忘了id Selectors

$('#commenttextarea').keyup(function (event) { 
    if ( event.shiftKey && event.keyCode == 13) { 
     var content = this.value; 
     var caret = getCaret(this); 
     this.value = content.substring(0,caret)+"\n"+content.substring(carent,content.length-1); 
     event.stopPropagation(); 

    }else if(event.keyCode == 13) 
    { 
     $('#commentform').submit(); 
    }});