2008-08-27 10 views
3

Je possède du code C#/asp.net dont j'ai hérité qui a une zone de texte que je veux faire multiligne. Je l'ai fait en ajoutant textmode = "multiline" mais quand j'essaie d'insérer un retour à la ligne, la touche entrée envoie le formulaire: Pentrer la clé pour insérer le retour à la ligne dans le contrôle de zone de texte multiligne asp.net

J'ai fait un googled autour et il semble que le comportement par défaut soit pour enter (ou control- entrez) pour insérer une nouvelle ligne. Comme je l'ai dit, j'ai hérité du code, donc je ne suis pas sûr qu'il y ait du javascript ou qu'il y ait une simple chose que je dois faire.

Répondre

4

Il se trouve que c'est un bug avec Firefox + ASP.NET où le javascript généré pour le truc defaultButton ne fonctionne pas dans Firefox. Je devais mettre un remplacement pour la fonction WebForm_FireDefatultButton comme décrit here:

function WebForm_FireDefaultButton(event, target) { 
    var element = event.target || event.srcElement; 
    if (event.keyCode == 13 && 
    !(element && 
    element.tagName.toLowerCase() == "textarea")) 
    { 
     var defaultButton; 
     if (__nonMSDOMBrowser) 
     { 
      defaultButton = document.getElementById(target); 
     } 
     else 
     { 
      defaultButton = document.all[target]; 
     } 
     if (defaultButton && typeof defaultButton.click != "undefined") 
     { 
      defaultButton.click(); 
      event.cancelBubble = true; 
      if (event.stopPropagation) 
      { 
       event.stopPropagation(); 
      } 
      return false; 
     } 
    } 
    return true; 
} 
0

Je suppose que c'est (comme vous le dites) du code javascript personnalisé.

Le contrôle asp.net d'origine fonctionne très bien ... vous allez devoir vérifier le code

0

gérez-vous l'événement TextChanged pour la zone de texte? Cela signifierait qu'ASP.Net définit la zone de texte pour provoquer une publication (soumettre la page) pour tout ce que le pourrait perdre la zone de texte, y compris la touche Entrée.

1

J'ai créé une page échantillon avec une zone de texte et un bouton et il a bien fonctionné pour moi:

<asp:TextBox runat="server" ID="textbox1" TextMode="MultiLine" /> 
<br /> 
<br /> 
<asp:Button runat="server" ID="button1" Text="Button 1" onclick="button1_Click" /> 

donc le plus dépend probablement soit une autre propriété que vous avez défini, ou un autre contrôle sur le formulaire . Edit: l'événement TextChanged est uniquement déclenché lorsque la zone TextBox perd le focus, ce qui ne peut pas être le problème.

1

Je ne trouve pas ce "javascript" WebForm_FireDefaultButton n'importe où, est-ce quelque chose que génère asp.net?

Oui.

Généré pour prendre en charge la fonctionnalité DefaultButton du formulaire et/ou du panneau contenant vos contrôles. C'est la source pour cela:

function WebForm_FireDefaultButton(event, target) { 
    if (event.keyCode == 13) { 
    var src = event.srcElement || event.target; 
    if (!src || (src.tagName.toLowerCase() != "textarea")) { 
     var defaultButton; 
     if (__nonMSDOMBrowser) { 
     defaultButton = document.getElementById(target); 
     } 
     else { 
     defaultButton = document.all[target]; 
     } 
     if (defaultButton && typeof (defaultButton.click) != "undefined") { 
     defaultButton.click(); 
     event.cancelBubble = true; 
     if (event.stopPropagation) event.stopPropagation(); 
     return false; 
     } 
    } 
    } 
    return true; 
} 
0

@ dave-ward, je viens de creuser à travers des monticules de javascript. le plus était ASP.NET généré des choses pour la validation et AJAX, il y a un groupe commençant par "WebForm_" que je suppose est la norme pour faire le bouton par défaut, etc le seul javascript que nous mettons sur la page est de basculer la visibilité et de faire une validation personnalisée ...

edit: J'ai trouvé ci-dessous. Je ne comprends pas bien: P début de la forme la textarea est, et un script trouvé plus tard: (note, quelque chose sur stackoverflow est de jouer avec les underscores)

<form name="Form1" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1"> 

<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['Form1']; 
if (!theForm) { 
    theForm = document.Form1; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 
-1

vous pouvez utiliser \ n pour entrer clé à savoir [a-zA-Z 0-9 /. \ N] {} 20500

Questions connexes