2012-04-14 87 views
0

执行下面的代码时,它会先显示文本框的原始内容,然后显示每组键我一直按下,直到点击“Enter”。因此,如果文本框最初包含“冰淇淋 - 皮埃尔的巧克力片”和我在文本框中单击以获得焦点,并与“茶”取代它,我会得到4个警告框,每个具有以下内容:尝试在按下Enter键后显示文本框内的内容

  1. 冰淇淋 - 皮埃尔的巧克力片
  2. 牛逼

然后,如果我点击不同的行和做其他的事情,我会从之前然后原来的4个警报框新的...它k eeps堆叠,我不知道为什么?

这里是我的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。

(UPDATE):

好吧,我使用下面kmb385提供的代码,但我想我失去了一些东西还在。我没有看到任何警报,所以我在'$(“.txtHook”).presspress(function(e){'line')处设置了一个断点,并且在表格文本框内的键输入期间它没有到达它包括回车键

这里就是代码所在的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标签内:

<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> 

(FINAL UPDATE :)

原来我包含的JQuery不正确。我把它移到母版页的head标签和更改的代码如下:

<script type="text/javascript" src="../scripts/jquery-1.4.1.min.js"></script> 

之后,提供的代码我kmb385开始工作了:)

+0

你想捕捉,当他们按下回车键而输入字段有专注或只是当他们按Enter键? – 2012-04-14 23:19:45

+0

输入键被按下时,无论哪个文本框都有焦点。如果他们击中输入,并专注于他们刚才制作的单选按钮,我希望被忽略。我的屏幕由2个下拉列表,一个表格,3个单选按钮以及基于表格中选定行显示信息的各种标签组成。我正在使用这些警报来测试我的逻辑,以捕获被锁定到文本框中的内容。谢谢。 – 2012-04-14 23:31:53

+0

好的,这有助于我回答你的问题。 – 2012-04-14 23:34:25

回答

0

你原来的JavaScript代码是有约束力的匿名函数添加到文档上的按键事件,每次在您创建的输入中按下某个键。这导致每次在文档/页面上的任何位置按下按键时会触发多个功能。我删除了.cs文件中onKeyPress事件的绑定。另外在cs文件中,我在文本框中添加了一个类属性,所以我可以在jquery中将它钩入。

在Javascript中,我使用jquery中的类选择器将函数绑定到每个输入的keypress事件。该函数获取输入的值并将其分配给隐藏的输入。这段代码可能有问题,因为我不熟悉。净,如果有让我知道,我们可以通过他们。我对后面的选择器持怀疑态度,但我猜测它是一个.net的东西。

的document.getElementById( “<%= HiddenField1.ClientID%>”)。值

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 = "txtHook cssAdjust trans"; 
    txtItem.Style.Add("padding", "0px 5px 0px 5px"); 
    txtItem.Attributes.Add("onFocus", "javascript:this.select();"); 
    tblCell.Controls.Add(txtItem); 
} 

的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); 
      } 
     }); 
    }); 
+0

好的,我会尽快给你一个,让你知道。感谢您的快速反应,非常感谢(尤其是解释为什么这是表现的方式)。 – 2012-04-14 23:59:05

+0

试图发布更多的代码,但它并没有让我。我在上面添加到我的原始文章 - 这不起作用,但我详细解释(与其他代码)上面: – 2012-04-15 00:58:59

+0

原来我的包含代码的JQuery是不正确的。一旦我把我的母版页头标签中的'',你的代码开始工作:)再次感谢您的帮助,我正在全速前进。 – 2012-04-15 03:12:29

相关问题