需要根据与之交互的最后一个控件改变在我的aspx页面上按Enter键的行为。我有两个文本框和一个下拉列表。这些控件中的每一个都有一个相应的按钮,该按钮接收输入并将其应用于页面上的其他字段。就像在主部件中添加选项一样。
示例:如果按下button2,将应用textbox2中的选项,但不应用textbox1中的选项或下拉列表。页面将刷新,用户可以继续选择选项。
如何更改页面以允许用户在文本框中键入文本,然后按Enter键以激活相应按钮的代码。我已经尝试了各种js来设置页面默认值,但是在动态更改它时一直没有用。
答案 0 :(得分:1)
您可以使用ASP.Net Panel控件的DefaultButton接受回车键。
http://geekswithblogs.net/ranganh/archive/2006/04/12/74951.aspx
<asp:Panel ID="pnl1" runat="server" defaultbutton="Button1">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Click" />
</asp:Panel>
<asp:Panel ID="pnl2" runat="server" defaultbutton="Button2">
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button2_Click" />
</asp:Panel>
答案 1 :(得分:0)
为修改输入的用户设置事件侦听器,并设置对正确按钮的引用。然后让一个用于输入按钮的监听器触发提交引用的按钮。你没有提到jQuery或任何JS框架,所以我会尝试编写普通的javascript,我建议使用框架来支持跨浏览器。
var myButtonId = null;
var storeInputButtonId = function(buttonId) {
return function(event) {
myButtonId = buttonId;
};
};
//Do following for inputs, or your preferred event binding pattern
var fld = document.getElementById('myInputId');
//Statically refer to button id or replace with suitable algorithm
var inputButtonId = "";
if (fld.addEventListener) {
//Could bind to other events with logic based on input element type
fld.addEventListener('keyup',storeInputButtonId(inputButtonId), false);
}
//Method to trigger the button click event
function submitData(event){
//Watch for the enter button
if ( event.which == 13 ){
document.getElementById(myButtonId).click();
}
}
//Bind the listener to the enter button
var bodyElement = document.getElementsByTagName('body')[0];
if (bodyElement.addEventListener) {
bodyElement.addEventListener('keydown',submitData, false);
}