[英]onKeypress Enter Key event on textfield not working in Chrome
我有一個問題,就像這里提出的關於如何在chrome中處理回車鍵的問題一樣。
我想要完成的效果是允許輸入鍵在焦點位於當前字段內時調用一個按鈕的單擊事件。 為此,我使用以下代碼:
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>
在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>
並在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;
}
上面的代碼在FF和IE中工作正常但是chrome繼續提交整個表單而不是在enterkey上捕獲按鍵。
謝謝你的任何建議。
我會說使用'keyup'而不是'keypress'可以解決你的問題
這也應該做的工作:
var key = e.keyCode || e.which;
if(key === 13 { /* your code */ }
您可以在按鍵事件中嘗試此操作
$("#txtContainer").keypress(function (e) {
e.preventDefault();
var key = window.event ? e.keyCode : e.which;
if (key == '13') {
doClick(buttonname, e);
}
});
注意:var key = window.event? e.keyCode:e.which; 並且應該首先放置e.preventDefault()並返回false; 因為您使用了e.preventDefault(),所以不是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.