0

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 %>', '');

            }

        }

    }
});    
4

2 に答える 2

0

私の意見では、Asp.net の Requirefield バリデーターではなく、Jquery フォーム検証を使用する必要があります。

現在、from で必須フィールド バリデータを使用しており、これを Jquery クライアント側バリデーションに置き換えることができます。それで問題が解決するかもしれません。

Jquery の使用を検証する方法を参照してください。

  1. jquery for validation プラグイン
  2. フォームバリデーター
于 2012-06-02T06:30:31.287 に答える