0

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

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

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

4

2 回答 2

1

您可以使用 ASP.Net 面板控件的 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>
于 2013-02-25T21:25:04.243 回答
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);
}
于 2013-02-25T21:24:19.943 回答