J'ai le contrôle de zone de texte asp.net suivant.
<asp:TextBox ID="txtAdd" runat="server" />
Après que l'utilisateur ait écrit quelque chose dans cette zone de texte et appuyé sur ENTER clé, je veux exécuter du code de codebehind.
Que devrais-je faire?
En utilisant jQuery j'ai capturé ENTER clé et déclenché un événement bouton caché
$(document).ready(function(){
$(window).keydown(function(e){
if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click();
});
});
Y a-t-il une meilleure façon ?
ASPX:
<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="return EnterEvent(event)"></asp:TextBox>
<asp:Button ID="Button1" runat="server" style="display:none" Text="Button" />
JS:
function EnterEvent(e) {
if (e.keyCode == 13) {
__doPostBack('<%=Button1.UniqueID%>', "");
}
}
CS:
protected void Button1_Click1(object sender, EventArgs e)
{
}
Envelopper la zone de texte à l'intérieur asp:Panel
Mots clés
Cacher un bouton qui a un événement de clic qui fait ce que vous voulez et donnez le <asp:panel>
a DefaultButton
Attribut avec l'ID du bouton caché.
<asp:Panel runat="server" DefaultButton="Button1">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" style="display:none" OnClick="Button1_Click" />
</asp:Panel>
Vous pouvez envelopper la zone de texte et le bouton dans un ASP: Panel et définir la propriété DefaultButton du Panel sur l'ID de votre bouton Soumettre.
<asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton">
<asp:TextBox ID="TextBox1" runat="server" />
<asp:Button ID="SubmitButton" runat="server" Text="Submit" OnClick="SubmitButton_Click" />
</asp:Panel>
Désormais, chaque fois que le panneau est actif, l'événement 'SubmitButton_Click' se déclenche lorsque vous appuyez sur Entrée.
la réponse de ahaliav fox est correcte, mais il y a un petit problème de codage.
Changement
<%=Button1.UniqueId%>
à
<%=Button1.UniqueID%>
c'est sensible à la casse. propriété Control.UniqueID
Erreur 14 'System.Web.UI.WebControls.Button' ne contient pas de définition pour 'UniqueId' et aucune méthode d'extension 'UniqueId' n'accepte un premier argument de type 'System.Web.UI.WebControls.Button' ( il vous manque une directive using ou une référence Assembly?)
N.b. J'ai moi-même essayé l'événement TextChanged
le AutoPostBack
avant de chercher la réponse, et bien que ce soit presque exact, cela ne donne pas le résultat souhaité ni la question posée. Il se déclenche en perdant le focus sur le Textbox
et non en appuyant sur la touche Retour.
ma solution basée sur jQuery est ci-dessous :)
élément de texte:
<asp:TextBox ID="txtTextBox" ClientIDMode="Static" onkeypress="return EnterEvent(event);" runat="server"></asp:TextBox>
<asp:Button ID="btnSubmitButton" ClientIDMode="Static" OnClick="btnSubmitButton_Click" runat="server" Text="Submit Form" />
Javascript derrière:
<script type="text/javascript" language="javascript">
function fnCheckValue() {
var myVal = $("#txtTextBox").val();
if (myVal == "") {
alert("Blank message");
return false;
}
else {
return true;
}
}
function EnterEvent(e) {
if (e.keyCode == 13) {
if (fnCheckValue()) {
$("#btnSubmitButton").trigger("click");
} else {
return false;
}
}
}
$("#btnSubmitButton").click(function () {
return fnCheckValue();
});
</script>
Essayez de suivre: Aspx:
<asp:TextBox ID="TextBox1" clientidmode="Static" runat="server" onkeypress="EnterEvent(event, someMethod)"></asp:TextBox>
<asp:Button ID="Button1" onclick="someMethod()" runat="server" Text="Button" />
JS:
function EnterEvent(e, callback) {
if (e.keyCode == 13) {
callback();
}
}
<asp:Panel ID="Panel2" runat="server" DefaultButton="bttxt">
<telerik:RadNumericTextBox ID="txt" runat="server">
</telerik:RadNumericTextBox>
<asp:LinkButton ID="bttxt" runat="server" Style="display: none;" OnClick="bttxt_Click" />
</asp:Panel>
protected void txt_TextChanged(object sender, EventArgs e)
{
//enter code here
}
<input type="text" id="txtCode" name="name" class="text_cs">
et js:
<script type="text/javascript">
$('.text_cs').on('change', function () {
var pid = $(this).val();
console.log("Value text: " + pid);
});
</script>
Essayez cette option.
met à jour cette partie de codage dans l'événement Page_Load avant d'attraper IsPostback
TextBox1.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('ctl00_ContentPlaceHolder1_Button1').click();return false;}} else {return true}; ");