私はajaxmodalpopを持っていて、以下のようないくつかのコントロールがあります。問題は、テキストボックスの「Enter」キーを押すとボタンにフォーカスが設定されることです(これは正しいです)が、「Enterキー」を5〜6回(または何度も)押すと、ボタンは私と同じ回数だけ起動しますエンターキーを押した。 クライアントがボタンをクリックしたときに検証関数がありますが、(テキストボックスの値がクリアされている場合は検証関数を通過できません)その関数を2回おきに渡してはなりません。サーバー側からテキストボックスの値をクリアするためです。
それは非常に緊急の親愛なる専門家です
<asp:TextBox ID="txtPurpose" runat="server" TabIndex="4" Width="558px" Style="text-transform: uppercase; overflow: hidden" CssClass="textleftWithBorder" ClientIDMode="Static" onkeydown="ConvertEnterToTab(event)">/asp:TextBox>
<asp:Button runat="server" ID="btnSubmitNAdd" TabIndex="5" Text="Submit & Add" ClientIDMode="Static" UseSubmitBehavior="true" onkeydown="HandleLeftRightArrow(event,'btnClose','btnSubmitAndClose')" OnClick="btnSubmitNAdd_Click" OnClientClick="return Validate()" />
と機能は次のとおりです。
function ConvertEnterToTab(e) {
var keyCode = e.keyCode || e.htmlEvent.keyCode;
if (keyCode === 13) {
var nextElement = document.getElementById("btnSubmitNAdd");
if (nextElement != undefined) {
nextElement.focus();
e.cancelBubble = true;
e.returnValue = false;
return false;
}
}
}
function Validate() {
if (ValueOf("txtCustomerName") != _CustomerResetText) {
return true;
}
else {
return false;
}
}
function HandleLeftRightArrow(event, leftControl, rightControl) {
var code = (event.keyCode ? event.keyCode : event.which);
if (code == 39) {
if (document.getElementById(leftControl).disabled == false)
SetControlFocus(rightControl);
}
else if (code == 37) {
if (document.getElementById(rightControl).disabled == false)
SetControlFocus(leftControl);
}
}