我有以下ASP.NET文本框控制。
<asp:TextBox ID="txtAdd" runat="server" />
用户在此文本框中写入某些内容并按下 enter 键,我想从CodeBehind运行一些代码。
我该怎么办?
使用jQuery i捕获 enter 键并发出了一些隐藏的按钮事件
$(document).ready(function(){
$(window).keydown(function(e){
if(e.keyCode == 13) $('#<% addbtn.ClientID %>'.click();
});
});
有更好的方法吗?
-
在
asp:Panel
TAGS内部包装文本框 -
隐藏一个具有单击事件的按钮,该按钮可以完成您想完成的操作,并使用隐藏按钮的ID给予
<asp:panel>
DefaultButton
属性。
<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>
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:面板中,然后将面板的默认键属性设置为提交按钮的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>
现在任何时候焦点都在面板内," submistbutton_click"事件将在按下Enter时发射。
ahaliav fox的答案是正确的,但是有一个小的编码问题。
更改
<%=Button1.UniqueId%>
to
<%=Button1.UniqueID%>
这很敏感。control.UniqueID属性
错误14'system.web.ui.webcontrols.button'不包含" uniqueId"的定义,并且没有扩展方法'uniquerId'接受类型的第一个参数'system.web.ui.webcontrols.button'可以可以找到(您是否缺少使用指令或装配给参考?)
n.b。在搜索答案之前,我自己在AutoPostBack
上尝试了TextChanged
事件,尽管这几乎是正确的,但它并没有给出我想要的所需结果,也没有给出问题。它会失去对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>
<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>
&nbsp;
protected void txt_TextChanged(object sender, EventArgs e)
{
//enter code here
}
尝试以下内容: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();
}
}
尝试此选项。
在捕获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}; ");
<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>
<script type="text/javascript">
function uniKeyCode(event) {
var key = event.keyCode;
if(key == 13){
__doPostBack('ctl00$MainContent$btnFind', '');
}
}
</script>
<asp:TextBox ID="txt_MBCID" CssClass="form-control" placeholder="" runat="server" data-toggle="tooltip" title="ស្វែងរក-តាមរយះលេខMBWin CID" onkeydown="uniKeyCode(event)" data-placement="left"></asp:TextBox>
<asp:LinkButton ID="btnFind" AccessKey="1" runat="server" data-placement="right" title="Search_by_AccountID" data-toggle="tooltip" CssClass="input-group-addon" Text="Find" OnClick="btnFind_Click" ><span class="glyphicon glyphicon-search"></span></asp:LinkButton>
我的2c ..我使用了JavaScript,但发现它做了没有完全预期的事情。
如上许多帖子所建议,请使用面板的DefaultButton属性/属性。它是可靠的(容易),并且可以在我对其进行测试的所有浏览器中工作。