2009-12-17 6 views
0

Existe-t-il un moyen de détecter s'il existe deux retours chariot consécutifs dans une chaîne provenant d'une zone de texte ou multiligne?Détection de deux retours chariot consécutifs à la fin de la chaîne

Voici le scénario: Dans une zone de texte, l'utilisateur saisit ABCD "Enter" EFGHI "Enter" JKLMNOP "Enter" "Enter". Après cela, je dois forcer l'événement de clic du bouton - pas form.submit.

Voici la page 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> 

Ceci est la page 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

Voulez-vous dire à la fin de la chaîne ou n'importe où dans la chaîne? Votre titre et votre corps de question ne correspondent pas. –

Répondre

1

Oui, vous pouvez le faire avec une expression régulière:

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

Le caractère \r correspond au retour chariot. Peut-être que vous voulez dire le saut de ligne (\n)? Vous pouvez également gérer différents types de nouvelle ligne '\ r', '\ r \ n' ou '\ n'. Vous pouvez le faire comme ceci:

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

Si vous souhaitez que le match à la fin de la chaîne, utilisez le symbole regex $:

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

ou:

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

Merci pour votre message. Cela fonctionne lorsque vous appuyez sur "Entrée" sur la troisième fois. Par exemple, j'entre "FirstSearchWord", appuyez sur "Entrée" (le curseur avance sur nextline), "SecondSearchWord", appuyez sur "Entrée" (le curseur avance sur nextline), appuyez sur "Entrée" (ceci quand il devrait être renvoyé), sauf que je dois appuyer sur "Entrée" à nouveau avant la publication de la page. Des idées pourquoi et comment éliminer ce "Entrée" supplémentaire? Merci – Risho

+0

Donc vous voulez soumettre automatiquement après que l'utilisateur entre exactement deux lignes dans la zone de texte? –

3
var isDoubled = yourString.indexOf("\n\n") != -1; 
1
if (/[\r\n]{2,}/.test(myString)) 
{ 
//TODO 
} 

Cherche deux ou plusieurs carrag consécutifs e retour/nouvelles lignes n'importe où dans une chaîne.

+1

Cela échoue pour "Cela contient seulement une \ r \ nne ligne". –

+0

Ne ramasse jamais le 2e retour de chariot. – Risho

Questions connexes