0

我正在使用 jquery 在 Alt+S 上保存一个表单,并且我还在检查必填字段。它工作正常,但我有一个问题。当我在输入必填字段之前按 Alt+S 时,它会给我必填字段的错误,而当我在必填字段中键入任何内容时,表单就会被保存。我希望在填写字段时出错并且如果用户再次按 Alt+S 则应该保存表单。

jQuery代码

$(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

根据我的意见,您应该使用 Jquery Form 验证而不是 Asp.net 的 Requirefield 验证器。

目前,您在 from 中使用必填字段验证器可以将其替换为 Jquery 客户端验证。所以它可能会解决你的问题。

请参阅如何验证使用 Jquery。

  1. 用于验证插件的 jquery
  2. 表单验证器
于 2012-06-02T06:30:31.287 回答
0

编码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>$(function(){
        $(document).keyup(function(event){
                if(event.which == 65){
                    alert("The Letter A was pressed");
                }
        });
    });
    </script>

每个键都有一个数值,例如,a 等于 65,b 等于 66(依此类推)。

http://youtu.be/xXZsTNwfMNc 这是一个教程,将向您详细展示如何在 jQuery 中使用热键。

于 2013-09-22T10:22:32.263 回答