2009-12-17 3 views
0

Есть ли способ определить, есть ли два последовательных возврата каретки в строке, полученной из текстового поля или многострочного текстового поля?Обнаружение двух последовательных возвратов каретки в конце строки

Вот сценарий: В текстовой области пользователь вводит ABCD «Enter» EFGHI «Enter» JKLMNOP «Enter» «Enter». После этого мне нужно принудительно нажать событие нажатия кнопки - not form.submit.

Вот страница default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<%@ Register Src="~/UserControls/Search.ascx" TagName="Search" TagPrefix="ucSearch" %> 
<html xmlns="w3.org/1999/xhtml">; 
<head runat="server"> 
<title></title> </head> 
<body> 
<form id="form1" runat="server"> 
<asp:scriptmanager runat="server"></asp:scriptmanager> 
<div> 
<ucSearch:Search id="search1" runat="server" /> 
</div> 
</form> 
</body> 
</html> 

Это страница Search.ascx:

<script language="javascript"> 
var inputString function doit(){inputString = document.getElementById("search1$txtSearchText").value; 
if (inputString.match(/(\n\n|\r\r|\r\n\r\n)$/)) { 
    document.getElementById("search1_btnFindAssets").click(); 
} 

</script> 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Search.ascx.cs" Inherits="UserControls_Search"%> 
<asp:TextBox ID="txtSearchText" TextMode="MultiLine"onKeyPress="doit();" runat="server"> 
</asp:TextBox> 
<br> 
<asp:ButtonID="btnFindAssets"runat="server"Text="Find"onclick="btnFindAssets_Click"> 
+1

Вы имеете в виду в конце строки или в любом месте строки? Ваше название и вопрос не совпадают. –

ответ

1

Да, вы можете сделать это с помощью регулярного выражения:

if (s.match(/\r\r/)) { ... } 

\r знак соответствует возврату каретки. Может быть, вы имеете в виду линейный фид (\n)? Вы также можете обрабатывать различные типы новой строки '\ r', '\ r \ n' или '\ n'. Вы можете сделать это так:

if (s.match(/\n\n|\r\r|\r\n\r\n/)) { ... } 

Если вы хотите только матч в конце строки, используйте символ регулярного выражения $:

if (s.match(/\r\r$/)) { ... } 

или:

if (s.match(/(\n\n|\r\r|\r\n\r\n)$/)) { ... } 
+0

Спасибо за сообщение. Это срабатывает, когда вы нажмете «Enter» в третий раз. Например, я ввожу «FirstSearchWord», нажимаю «Enter» (курсор продвигается на следующей строке), «SecondSearchWord», нажимает «Enter» (курсор продвигается на следующей строке), нажимает «Enter» (это, когда он должен отправлять сообщения назад) кроме того, что я должен снова нажать «Ввод» перед возвратом страницы. Любые идеи, почему и как устранить этот дополнительный «Enter»? Спасибо – Risho

+0

Итак, вы хотите автоматически отправить после того, как пользователь вводит ровно две строки в текстовое поле? –

1
if (/[\r\n]{2,}/.test(myString)) 
{ 
//TODO 
} 

Ищет двух или более последовательных каррагов e возвращает/новые строки где-нибудь в строке.

+1

Это не работает для «Это содержит только одну строку \ r \ nnew». –

+0

Никогда не поднимает второй возврат каретки. – Risho

Смежные вопросы