我有以下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();
});
});
还有更好的方法吗?
答案 0 :(得分:110)
将文本框包装在asp:Panel
标记
隐藏具有执行所需操作的Click事件的按钮,并为<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>
答案 1 :(得分:31)
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)
{
}
答案 2 :(得分:11)
您可以将文本框和按钮包装在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>
现在,只要焦点位于Panel中,按下Enter键时就会触发'SubmitButton_Click'事件。
答案 3 :(得分:5)
<%=Button1.UniqueId%>
到
<%=Button1.UniqueID%>
区分大小写。 Control.UniqueID Property
错误14'System.Web.UI.WebControls.Button'不包含'UniqueId'的定义,并且没有扩展方法'UniqueId'接受类型'System.Web.UI.WebControls.Button'的第一个参数可以找到(你错过了使用指令或汇编引用吗?)
N.b。我在TextChanged
之前尝试了AutoPostBack
事件,然后才开始寻找答案,尽管它几乎是正确的,但它并没有给出我想要的结果,也没有提出问题。它会失去对Textbox
的关注,而不是在按下返回键时。
答案 4 :(得分:2)
我的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>
答案 5 :(得分:1)
<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
}
答案 6 :(得分:1)
尝试按照: 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();
}
}
答案 7 :(得分:0)
尝试此选项。
在捕获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}; ");
答案 8 :(得分:0)
<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>
答案 9 :(得分:-1)
我的2c ..我使用过javascript,但发现它做了一些不太令人期待的事情。
使用面板的defaultButton属性/属性,就像上面提到的很多帖子一样。它是可靠的(简单),适用于我测试过的所有浏览器。