2016-03-02 22 views
1

我有一個RadTextBox:的JavaScript字符串替換和後回RadTextBox上的粘貼

<telerik:RadTextBox ID="txtBox" TextMode="MultiLine" Width="635px" TabIndex="2" Rows="6" runat="server" onpaste="JavaScript:return RestrictCopyPaste();"></telerik:RadTextBox> 

調用下面的JavaScript函數,當它粘貼到文本框:

function RestrictCopyPaste() { 
     var txt = clipboardData.getData('Text') 
     txt = txt.replace("[^\u0000-\u007F]", ""); 
     document.getElementById("<%= txtBox.ClientID%>").value = txt 
    } 

我想替換每個字符在那個正則表達式代碼中有一個空白字符串。這樣做的目的是刪除粘貼上的所有非ASCII字符。目前,當我複製並粘貼到文本框中時,它只是複製了我正在粘貼的內容。

任何想法如何讓這個工作?

+0

使用雙反斜線。 –

+0

@WiktorStribiżew添加雙反斜槓的目的是什麼?你的意思是? [^ \\ u0000 - \ u007F]。我得到了同樣的結果。 – user2461876

+0

那麼,「[^ \ u0000- \ u007F]」被傳遞給RegExp的構造函數,因此反斜槓變成了兩倍。或者使用正則表達式:'txt = txt.replace(/ [^ \ x00- \ x7F] /,「」);'如果不起作用,請檢查'clipboard.getData'部分代碼。我發現它在Chrome中不起作用,並在IE中運行。 –

回答

1

你需要使用文字正則表達式與/g修改:

txt = txt.replace(/[^\u0000-\u007F]/g, ""); 

否則,你需要使用一個RegExp構造函數符號是這樣的:

txt = txt.replace(RegExp("[^\\u0000-\\u007F]", "g"), ""); 
+1

我使用了第二個選項。爲了讓代碼實際完成粘貼,我還必須添加代碼,這就是它出現兩次的原因。所以現在它只是使用替換後我設置的文本。 – user2461876