admin管理员组文章数量:1328337
I have a question along the same vein as the one asked here regarding how the enter key is handled in chrome.
The effect I am trying to acplish is to allow the enter key to call a click event of one a button while focus in within the current field. To acplish this I am using the following code:
javascript:
<script type="text/javascript">
//attempting to capture keypress for chrome here but this is not working
$("#txtContainer").keypress(function (e) {
if (e.keyCode == '13') {
e.preventDefault();
doClick(buttonname, e);
return false;
}
});
function doClick(buttonName, e) {
var key;
if (window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if (key == 13) {
var btn = document.getElementById(buttonName);
if (btn != null) {
btn.click();
event.keyCode = 0
}
}
}
</script>
within the aspx
<form id="form1" runat="server">
<div>
<asp:LinkButton ID="newBtn" runat="server" OnClick="btnLogin_Click" Text="ASP Link" />
<asp:TextBox ID="txtContainer" runat="server" Width="100" />
<asp:Label ID="time_lbl" runat="server" />
</div>
</form>
and within the code behind aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtContainer.Attributes.Add("onKeyPress", "doClick('" + newBtn.ClientID + "',event)");
}
}
public void btnLogin_Click(object sender, EventArgs e)
{
time_lbl.Text = txtContainer.Text;
}
The above code works fine in FF and IE however chrome continues to submit the entire form vs. capturing the keypress on the enterkey.
Thank you for any suggestions.
I have a question along the same vein as the one asked here regarding how the enter key is handled in chrome.
The effect I am trying to acplish is to allow the enter key to call a click event of one a button while focus in within the current field. To acplish this I am using the following code:
javascript:
<script type="text/javascript">
//attempting to capture keypress for chrome here but this is not working
$("#txtContainer").keypress(function (e) {
if (e.keyCode == '13') {
e.preventDefault();
doClick(buttonname, e);
return false;
}
});
function doClick(buttonName, e) {
var key;
if (window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if (key == 13) {
var btn = document.getElementById(buttonName);
if (btn != null) {
btn.click();
event.keyCode = 0
}
}
}
</script>
within the aspx
<form id="form1" runat="server">
<div>
<asp:LinkButton ID="newBtn" runat="server" OnClick="btnLogin_Click" Text="ASP Link" />
<asp:TextBox ID="txtContainer" runat="server" Width="100" />
<asp:Label ID="time_lbl" runat="server" />
</div>
</form>
and within the code behind aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtContainer.Attributes.Add("onKeyPress", "doClick('" + newBtn.ClientID + "',event)");
}
}
public void btnLogin_Click(object sender, EventArgs e)
{
time_lbl.Text = txtContainer.Text;
}
The above code works fine in FF and IE however chrome continues to submit the entire form vs. capturing the keypress on the enterkey.
Thank you for any suggestions.
Share Improve this question edited May 23, 2017 at 10:34 CommunityBot 11 silver badge asked Feb 14, 2012 at 22:02 rlcrewsrlcrews 3,56221 gold badges72 silver badges121 bronze badges 3-
4
Try using
e.which === 13
instead ofe.keyCode
. With thekeypress()
event I've had problems like that, ande.which
seems to solve it. Otherwise, just usekeyup()
orkeydown()
; – elclanrs Commented Feb 14, 2012 at 22:07 - Did either of these help you? I am ing across the same issue and these didn't solve my problem – TheLifeOfSteve Commented Jul 11, 2012 at 19:43
- @Steve No I have since found numerous references to this problem from others but no solution. It appears to be linked to how chrome manages the enter key and submission of a form. If I ever do solve it I'll post the answer here. – rlcrews Commented Jul 12, 2012 at 0:23
3 Answers
Reset to default 1I would say that using 'keyup' instead of 'keypress' should solve your problems
You may try this in your keypress event
$("#txtContainer").keypress(function (e) {
e.preventDefault();
var key = window.event ? e.keyCode : e.which;
if (key == '13') {
doClick(buttonname, e);
}
});
Note: var key = window.event ? e.keyCode : e.which; and e.preventDefault() should be placed at first and return false; is not required because you've used e.preventDefault().
This should also do the job:
var key = e.keyCode || e.which;
if(key === 13 { /* your code */ }
本文标签: javascriptonKeypress Enter Key event on textfield not working in ChromeStack Overflow
版权声明:本文标题:javascript - onKeypress Enter Key event on textfield not working in Chrome - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742249188a2440426.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论