在aspx表单上设置输入键行为

时间:2013-02-25 21:05:20

标签: javascript asp.net .net

需要根据与之交互的最后一个控件改变在我的aspx页面上按Enter键的行为。我有两个文本框和一个下拉列表。这些控件中的每一个都有一个相应的按钮,该按钮接收输入并将其应用于页面上的其他字段。就像在主部件中添加选项一样。

示例:如果按下button2,将应用textbox2中的选项,但不应用textbox1中的选项或下拉列表。页面将刷新,用户可以继续选择选项。

如何更改页面以允许用户在文本框中键入文本,然后按Enter键以激活相应按钮的代码。我已经尝试了各种js来设置页面默认值,但是在动态更改它时一直没有用。

2 个答案:

答案 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);
}