2013-03-11 61 views
1

我在Google Chrome浏览器的Textarea上实现了一个名为Single New Line和New Paragraph的功能(在IE中,我的解决方案在IE上没有问题,因为IE认为Shift + Enter( \ r \ n)和Enter(\ n)不同)。其概念是,如果我按Shift + Enter,光标后面的行(文本)应该转到下一个(新)行(\ r \ n),但它应该在同一段落中考虑。现在,如果我只按Enter键,那么在光标移动到下一行(新行)(\ n)之后,行(文本)也应该被视为新段落。使用jQuery在Textarea中使用单行新行与新段落

现在我的问题是:默认情况下,根据jQuery API文档(http://api.jquery.com/val/),Textarea不考虑\ r \ n。它只考虑\ n是否按Shift + Enter或仅输入。要解决我实现钩(jQuery的网站颁发)称为

$.valHooks.textarea = { 
    get: function(elem) { 
    return elem.value.replace(/\r?\n/g, "\r\n"); 
    } 
}; 

但后来它的每一个地方的时间\ r \ n没有问题我按textarea的哪些键。我想区分Shift + Enter(\ r \ n)和Enter(\ n)。但是如果放置了上面的钩子,那么每次添加\ r \ n是否按Shirt + Enter或仅输入。

在服务器端,现在很难确定如何考虑单一新行(\ r \ n)或新段落(\ n)?因为在这两种情况下\ r \ n组合都是从Chrome浏览器发送的。

基于Shift + Enter键,只有输入按键我会区分它们在服务器端。但正如上面所解释的,每次从Chrome发送到服务器的时间都是\ r \ n。

以上整个问题仅适用于Google Chrome浏览器(它适用于IE的所有版本)。

如果在上面的问题解释中仍然缺少任何东西,请告诉我。

等待进一步协助:)

+0

有没有人可以协助这种情况? – NullPointer 2013-03-14 11:09:36

+0

没有人在那里? – NullPointer 2013-03-16 04:48:55

回答

1

我解决了它我的自我。由于Chrome总是返回\r\n,无论我们是否按ENTERSHIFT+ENTER。我根据我的要求做了一个窍门。

我是在需要放置一个特殊的Unicode字符,当用户按SHIFT+ENTER而要达到这个我用下面的代码:

jQuery(txtInputControl).val(contentOfInputControl.substring(0,caretPositionOfCursor) + String.fromCharCode(172) + contentOfInputControl.substring(caretPositionOfCursor,contentOfInputControl.length)); 

,我把一个Unicode特殊字符在用户拥有内容的中间手段按下SHIFT+ENTER。也处理它一个服务器端太。这样我就可以跟踪双方。