我在执行以下代码时遇到的问题,它将首先显示文本框的原始内容,然后是我按下的每组键,直到按下“Enter”。因此,如果文本框最初包含“Ice Cream - Pierre's Chocolate Chip”并且我单击文本框以获取焦点并将其替换为“茶”,我将获得 4 个警报框,每个警报框包含以下内容:
- 冰淇淋 - 皮埃尔的巧克力片
- 吨
- 碲
- 茶
然后,如果我单击不同的行并执行其他操作,我会得到原来的 4 个警报框,然后是新的……它一直在堆积,我不知道为什么?
这是我的 .cs 文件中的一些代码 - 请注意我添加的“OnKeyPress”属性:
public TCell(String celltext,String strTextBox,String strName)
{
int iWidth = 0;
int intRandom =
iWidth = Convert.ToInt32(strTextBox);
tblCell = new TableCell();
TextBox txtItem = new TextBox();
txtItem.ID = strName;
txtItem.Text = celltext;
txtItem.Width = iWidth;
txtItem.BorderStyle = BorderStyle.None;
txtItem.CssClass = "cssAdjust trans";
txtItem.Style.Add("padding", "0px 5px 0px 5px");
txtItem.Attributes.Add("onKeyPress","captureTable(this.value);");
txtItem.Attributes.Add("onFocus", "javascript:this.select();");
tblCell.Controls.Add(txtItem);
}
然后这里是我按下回车键后显示的功能:
function captureTable(strValue)
{
$(document).keypress(function (e) {
if (e.which == 13) // Enter has been pressed.
{
e.preventDefault();
document.getElementById("<%=HiddenField1.ClientID %>").value = strValue;
alert(strValue);
}
});
提前感谢您能给我的任何帮助。我使用“window.event”进行了这项工作,但这将我从我阅读的内容中锁定在 IE 中,我正在尝试为此使用 JQuery。
(更新):
好的,我使用了下面 kmb385 提供的代码,但我认为我仍然缺少一些东西。我没有出现任何警报,所以我在 '$(".txtHook").keypress(function(e){' 行设置了一个断点,并且在表格文本框内的键输入期间它没有到达它,包括回车键。
这是代码位于 default.apsx 页面中的位置:
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
$(document).ready(function(){
$(".txtHook").keypress(function(e){
if (e.which == 13) // Enter has been pressed.
{
e.preventDefault();
document.getElementById("<%=HiddenField1.ClientID %>").value = $(this).val();
alert(strValue);
}
});
});
我将 JQuery 包含在网站母版页的正文标记中:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-1.4.1.min.js" />
</Scripts>
</asp:ScriptManager>
(最后更新:)
原来我包含的 JQuery 是不正确的。我将其移至母版页的 head 标记并将代码更改为:
<script type="text/javascript" src="../scripts/jquery-1.4.1.min.js"></script>
之后,提供我的 kmb385 的代码开始工作:)