フォーム入力の検証を実行するために、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>