Jquery Steps と FormValidation を使用していますが、onStepChanged の場合、フィールドを再検証できません。
onStepChanging: function(e, currentIndex, newIndex) {
var fv = $('#form1').data('formValidation'), // FormValidation instance
// The current step container
$container = $('#form1').find('section[data-step="' + currentIndex +'"]');
// Validate the container
fv.validateContainer($container);
var isValidStep = fv.isValidContainer($container);
if (isValidStep === false || isValidStep === null) {
// Do not jump to the next step
return false;
}
if (currentIndex === 3) { // form
$.ajax({
type: "POST",
url: URL,
data: $('#form1').serialize(),
dataType: 'json',
cache: false,
async: false,
success: function(data){
if (data.result === 'error') {
for (var field in data.fields) {
$('#'+field).val('');
$('#form1').formValidation('revalidateField', field)
}
$('#form1').steps("previous");
return;
} else {
console.log('Success');
}
},
error: function(x, status, error) {
return false;
},
});
}
return true;
}
入力は空ですが、再検証されていません!
私も(updateStatusとvalidateField)を試しましたが、成功しませんでした!! どうしたの!
更新しました
JSFIDDLE:デモ
ステップ 3 (確認) でサーバー側に投稿してデータ (製品の在庫、配送など) を処理しています。検証プロセスに合格しなかった場合は、ステップ 1 または 2 に戻ってデータを再入力します。または、検証プロセスに問題がない場合は、ステップ 3 で結果を表示し、ユーザーが終了できるようにします (フォームを送信します)。
PHP コード:
$result = "error";
$fields = array(
'product' => 'Out of stock',
'id' => 'ID not found',
);
$response = array('html'=>$html, 'result'=>$result, 'fields'=>$fields);
echo json_encode($response);