0

タイトルによると、MVCアプリケーションのJavery Unobtrusive検証に問題があります。Jquery MVCで邪魔されない妥当性検証

私が行っている:私のカスタム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の2つのイベントは、単に起動しません。

私はjQueryの検証サイト上のメソッドを使用して、それを実装している

から$("form").validate({ invalidHander: function(e, validator){ ... });メソッドにJavaScriptオブジェクトとしてハンドラーに渡される - それは

をオフに起動しませんでした今、私はこのアプローチを持っている:

 $(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サイトで作業しましたが、私は控えめな検証を実装していませんでした。

私が逃したかもしれないものについての提案はありますか?

+0

やや無関係 - 私がこれらのアプローチを試みる前に(正解するのが正しい)、私はエントリのエラーリストをチェックしただけです。フィールドを誤っていても、エラーリストは空でした。 2回目にすぐにフォームを送信すると、そのフォームにデータが入力され、コード内のツールチップが表示されます – Eon

答えて

0

私の場合、単純な修正 - e.preventDefaultを削除する必要がありました。

関連する問題