jqueryを使用してAlt + Sでフォームを保存しており、必要なフィールドもチェックしています。正常に動作していますが、問題が 1 つあります。必須フィールドに入力する前に Alt+S を押すと、必須フィールドにエラーが表示され、必須フィールドに何かを入力した瞬間にフォームが保存されます。フィールドが入力されたときにエラーが発生した後、ユーザーが再度 Alt+S を押すと、フォームが保存されます。
Jクエリコード
$(document).ready(function () {
var isAltKey = false;
var isShiftKey = false;
document.onkeyup = function (e) {
if (e.which == 18) isAltKey = false;
if (e.which == 16) isShiftKey = false;
}
document.onkeydown = function (e) {
if (e.which == 18) isAltKey = true;
if (e.which == 16) isShiftKey = true;
//ALT+S
if (e.which == 83 && isAltKey == true) {
TriggerSaveButton();
StopDefaultAction(e);
}
else if (e.which == 9 && isShiftKey == true) {
if (document.getElementById("cmbUnder_OptionList").focus() == true) {
document.getElementById("txtGroupSname").focus();
StopDefaultAction(e);
}
}
}
function StopDefaultAction(e) {
if (e.preventDefault) { e.preventDefault() }
else { e.stop() };
e.returnValue = false;
e.stopPropagation();
}
function TriggerSaveButton() {
var groupname = $('#txtGroupName').val();
if ($('#tab2').is(":visible")) {
if ((document.getElementById('<%= txtGroupName.ClientID %>').value == "") && ($('<%= listboxdestination.ClientID %>').children().length == 0)) {
ValidatorEnable(document.getElementById('<%= reqtxtGroupName.ClientID %>'), true);
ValidatorEnable(document.getElementById('<%= reqlstboxdest.ClientID %>'), true);
return false;
}
else if (groupname != "" && ($("#<%= listboxdestination.ClientID %> option").length != 0)) {
javascript: __doPostBack('<%=btnaddfrmSave.UniqueID %>', '');
}
}
else {
if ((document.getElementById('<%= txtGroupName.ClientID %>').value == "")) {
ValidatorEnable(document.getElementById('<%= reqtxtGroupName.ClientID %>'), true);
return false;
}
else if (groupname != "") {
javascript: __doPostBack('<%=btnaddfrmSave.UniqueID %>', '');
}
}
}
});