我在Google Chrome浏览器上实现了一个名为Single New Line和New Paragraph的功能(在IE浏览器中我的解决方案正在工作,所以在IE上没有问题因为IE考虑Shift + Enter(\ r \ n)和Enter(\ n) )不同)。这个概念是,如果我按Shift + Enter,那么光标之后的行(文本)应该转到下一个(新的)行(\ r \ n),但它应该在同一段落中考虑。现在,如果我只输入Enter键,那么光标之后的行(文本)应该转到下一行(新)行(\ n),但这次应该被视为新段落。
现在我的问题是:默认情况下,Textarea根据jQuery API文档(http://api.jquery.com/val/)不考虑\ r \ n。它只考虑\ n我是按Shift + Enter还是只按Enter键。为了解决这个问题,我实现了一个名为
的钩子(在jQuery网站中给出)$.valHooks.textarea = {
get: function( elem ) {
return elem.value.replace( /\r?\n/g, "\r\n" );
}
};
然而它每次都会出现\ r \ n无关紧要我在Textarea上按什么键。我想区分Shift + Enter(\ r \ n)和仅输入(\ n)。但是如果放置了挂钩,那么每次添加\ r \ n是否按下Shirt + Enter或仅按Enter键。
在服务器端,现在很难确定如何考虑单个新行(\ r \ n)或新段落(\ n)?因为在这两种情况下都会从Chrome浏览器中发送\ r \ n组合。
基于Shift + Enter并且仅按下Enter键我将在服务器端区分它们。但如上所述,每次\ r \ n从Chrome发送到服务器。
以上整个问题仅适用于谷歌浏览器(它正在使用IE的所有版本)。
如果仍然遗漏上述问题的解释,请告诉我。
等待进一步的协助:)
答案 0 :(得分:1)
我自己解决了。由于Chrome始终会返回\r\n
,无论我们是ENTER
还是SHIFT+ENTER
。我根据我的要求做了一个技巧。
当用户按下SHIFT+ENTER
时,我需要放置一个特殊的Unicode字符,为了达到这个目的,我使用了以下代码:
jQuery(txtInputControl).val(contentOfInputControl.substring(0,caretPositionOfCursor) + String.fromCharCode(172) + contentOfInputControl.substring(caretPositionOfCursor,contentOfInputControl.length));
表示我在用户按下SHIFT+ENTER
的内容中间放置了一个Unicode特殊字符。还要处理服务器端。这样我就可以从两边跟踪。