2016-06-21 15 views
1

フォーム入力の検証を実行するために、HTML5フォームでhttp://formvalidation.io/examples/のformValidationプラグインを使用しています。formValidationプラグインで検証コールバック関数を呼び出す方法は?

notEmptyなどの標準チェックは、入力時に期待通りに機能します。しかし、今では入力をリストに対して検証する必要があるケースがあります。私はすでにそれを行うにはcheckEMIDExists()関数をコーディングしましたが、formValidationプラグインから呼び出す方法を理解していませんでした。

This is the example I've followedコールバック関数の実装を試すためです。しかし、実行時にEMの入力値を入力するときにコールバック機能は起動しません。

入力値を変更するたびにになるというアラートをコールバック内に設定しました。私はまたchangeイベントでそれをトリガーすることによってcheckEMIDExists()が働くことを確認しました。

私はブール検証の結果を返す方法は正しくないようです。

質問:

私はformValidationプラグインの中にコールバック関数を呼び出すことができますどのように?

コード:(要旨)

EM入力要素 -

<input id="EscID" name="EM" maxlength="10" type="text" data-error="EM already exists or none supplied" placeholder="(If Applicable)" class="form-control"> 

スクリプト -

<script> 

    //List EM input is validated against 
    var escHistoryList = @Html.Raw(Json.Encode(Model.EscHistory)); 


    $(document).ready(function() { 


     var $createForm = $('#createForm'); 


     //Validate the required input fields to prevent submit if not 
     //valid input. 
     $('#createForm').formValidation({ 
      framework: 'bootstrap', 
      icon: { 
       valid: 'glyphicon glyphicon-ok', 
       invalid: 'glyphicon glyphicon-remove', 
       validating: 'glyphicon glyphicon-refresh' 
      }, 
      fields: 
       Application: { 
        validators: { 
         notEmpty: { 
          message: 'The Application name field is required' 
         } 
        } 
       }, 
       EM: { 
        validators: { 
         callback: { 
          message: 'A record with this EPRID already exists!', 
          callback: function (value, validator, $field) { 
           // Determine if the input EPRID already exists 
           var emidVal = $('#EscalationID').val(); 
           alert("IN VALIDATOR CALLBACK"); 
           var isEMIDMatch = false; 

           isEMIDMatch = checkEMIDExists(emidVal); 

           if(isEMIDMatch) 
           return true; 
          } 
         } 
        } 
       } 
      } 


     }); 



     //Determineif input EMID exists in list 
     function checkEMIDExists(emidVal){ 

      var isMatch = false; 
      for(var i=0;i<escHistoryList.length;i++){ 
       if(escHistoryList[i]["EM"].indexOf(emidVal) > -1){ 
        isMatch = true; 
        break; 
       } 

      } 

      return isMatch; 
     } 









    });//end $(document).ready 


</script> 

答えて

1

あなたのコールバックメソッドは、検証が失敗した場合はfalseを返す必要があります。 null戻り値は無視されます。

はにコールバックreturn文を変更し

:おそらく

return isEMIDMatch; 

かを、より簡潔に読みにくくいえ:

return checkEMIDExists(emidVal); 
関連する問題