次のasp.netテキストボックスコントロールがあります。
<asp:TextBox ID="txtAdd" runat="server" />
ユーザーがこのテキストボックスに何かを書いてから ENTER キー、私は分離コードからいくつかのコードを実行したい。
私は何をすべきか?
キャプチャしたjQueryを使用して ENTER キーを押し、非表示のボタンイベントを発生させた
$(document).ready(function(){
$(window).keydown(function(e){
if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click();
});
});
より良い方法はありますか?
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)
{
}
テキストボックスをasp:Panel
タグで囲む
やりたいことを行うクリックイベントを持つボタンを非表示にし、<asp:panel>
にDefaultButton
属性を非表示ボタンのIDで指定します。
<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>
テキストボックスとボタンをASP:Panelでラップし、PanelのDefaultButtonプロパティをSubmitボタンのIDに設定できます。
<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>
これで、フォーカスがパネル内にあるときはいつでも、Enterが押されると「SubmitButton_Click」イベントが発生します。
ahaliav foxの答えは正しいですが、小さなコーディングの問題があります。
変化する
<%=Button1.UniqueId%>
に
<%=Button1.UniqueID%>
大文字と小文字が区別されます。 Control.UniqueIDプロパティ
エラー14「System.Web.UI.WebControls.Button」には「UniqueId」の定義が含まれておらず、タイプ「System.Web.UI.WebControls.Button」の最初の引数を受け入れる拡張メソッド「UniqueId」が見つかりませんでした( usingディレクティブまたはアセンブリ参照がありませんか?)
N.b.私はTextChanged
イベントを自分でAutoPostBack
で試してから答えを検索しましたが、ほとんど正しいとはいえ、望んだ結果が得られず、質問もありませんでした。リターンキーを押したときではなく、Textbox
にフォーカスを失うと起動します。
私のjQueryベースのソリューションは以下です:)
テキスト要素:
<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:
<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>
フォローしてください: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">
およびjs:
<script type="text/javascript">
$('.text_cs').on('change', function () {
var pid = $(this).val();
console.log("Value text: " + pid);
});
</script>
このオプションを試してください。
isPostbackをキャッチする前にPage_Loadイベントのコーディング部分を更新します
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}; ");