簡體   English   中英

jQuery Unobtrusive驗證不在MVC中觸發

[英]Jquery Unobtrusive Validation not firing in MVC

如標題所示,我在MVC應用程序中的javascript中遇到JQuery Unobtrusive驗證問題。

我做了什么:

我表單上的輸入已綁定了適當的規則,這些規則將在我的自定義javascript中進行檢查:

<input type="text" class="form-control" name="rates_taxes" id="rates_taxes" data-val='true' data-val-ispositive="You must enter a positive value here or 0" data-val-isnumeric="You must enter a numerical value here. (e.g 250000)" required>

    ...
    jQuery.validator.addMethod('isnumeric', function (value) {
        return $.isNumeric(value);
    }, '');

    jQuery.validator.unobtrusive.adapters.add('isnumeric', function (options) {
        options.rules['isnumeric'] = {};
        options.messages['isnumeric'] = options.message;
    });

這里沒有顯示,我測試了當用戶鍵入輸入或提交表單時,是否確實輸入了isNumeric方法。

問題是表格的提交。 InvalidHandler和SubmitHandler這兩個事件根本不會觸發。

我已經使用Jquery Validation網站上的方法實現了該方法-該方法將處理程序作為Javascript對象傳遞給$("form").validate({ invalidHander: function(e, validator){ ... }); 方法-它沒有觸發

現在我有這種方法:

     $(document).on("click", "button[type='submit']", function (e) {
        if ($(e.target).data("customValidate") === true) {
            e.preventDefault();
            var form = $(e.target).parents("form");

            $(form).data("validator").settings.submitHandler = function (formhandler) {
                alert('submit');
                formhandler.submit();
            }; // <----

            $(form).data("validator").settings.invalidHandler = function (e, validator) {
                alert('error');
                for (var i = 0; i < validator.errorList.length; i++) {
                    var element = '#' + validator.errorList[i].element.name;
                    var error = validator.errorList[i].message;
                    if (!error || error === "undefined") {
                        error = "This field is required.";
                    }
                    $(element).prop('title', error);
                    $(element).data('placement', 'right');
                    $(element).data('toggle', 'tooltip').tooltip('show');
                }
            }; // <----

            $(form).validate();
        }
    });

直接在表單的數據中為Jquery Unobtrusive Validation Engine設置無效和有效的處理程序。

兩種方法都行不通。 盡管沒有實現無干擾的驗證,但我尚未與我的團隊一起在另一個MVC站點工作,盡管我沒有實現無干擾的驗證-因此,上面實現的這種方法不起作用的原因使我無法理解。

關於我可能錯過的任何建議嗎?

就我而言,簡單的解決方法-e.preventDefault必須刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM