こんにちは私はフォームを検証するためにJQueryフォームバリデーターを使用しています。ノックアウトjsを使用してボタンを使用して関数を呼び出すと、ボタンをクリックするとノックアウトjs関数を呼び出す必要がありますまた、同時にすべてのフィールドが有効であるかどうかをチェックすると、すべてのフィールドが検証されるまで何もしないでください。 jqueryバリデータフォームのリンクhttp://www.formvalidator.net/#advanced_programmaticallyボタンプレスで自動的に検証
ここには、関数を呼び出すフィールドとボタンがあります。
<input type="text" name="birthday" data-validation="date" data-validation-format="yyyy-mm-dd" placeholder="yyyy-mm-dd" data-validation-help="You must be more than 20 years old" class="form-control" value="<?php if (isset($user['Birthday'])) {echo $user['Birthday'];} ?>">
<div data-bind="ifnot: (loggedIn() == 'true')">
<button data-bind="click : openUpTwoStepAuth " type="submit" id="openUpTwoStepAuth" class="btn registerbtn">
<?php echo lang("register_continue_btn"); ?>
</button>
</div>
そしてここで、すぐにボタンがクリックされていますが、私の場合には、それは検証をチェックしませんし、AJAX呼び出しと進むにつれて検証を呼び出そうとノックアウトjsの関数です。
self.openUpTwoStepAuth = function(){
$('#openUpTwoStepAuth').validate(function(valid, elem) {
if(!valid){
return;
}
});
self.emailtokenconfirmation(false);
self.tokenError(null);
self.showTwoStepAuth();
$.ajax({
type: 'POST',
url: BASEURL + 'index.php/myprofile/sendEmailForTwoStepAuth/',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON({customerEmail : self.customerEmail()})
})
.done(function(data) {
if(data.success){
self.emailtokenconfirmation(true);
}else{
self.tokenError(data.result);
}
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert("Error code thrown: " + errorThrown);
})
.always(function(data){
});
}
その普通のボタンは、コード
<script>
$.validate({
modules : 'toggleDisabled',
disabledFormFilter : 'form.toggle-disabled',
showErrorDialogs : false
});
</script>
のこの作品を提出する関数を呼び出す場合、それは正常に動作しますが、私のために、私はjsの関数を呼び出すと同時に、検証を確認したいですフィールドの。
検証が成立するところにajaxを配置してください。 'if(!valid){return} else {//あなたのajax}'。あなたは 'knockout 'を使いたいかもしれません。バリデーションを行うために延長する。あなたがノックアウトを使用しているので –
@ Matt.kaajは、私がconsole.log(有効)をチェックすると、戻り値がないことです – FaF