Jquery 步骤和 FormValidation(重新验证)
Jquery Steps and FormValidation (re-validate)
我正在使用 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:Demo
在第 3 步(确认)我正在 post 到服务器端处理数据(产品库存、运输等)如果验证过程没有通过,请返回到第 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);
您的代码有一些错误:
1.
// Here, you should use `newIndex` instead of `curentIndex`
// Note that the index of the step goes from `0` to `count(steps) - 1`
if (newIndex === 2) {}
2。
// This
excluded: [':disabled', ':hidden', ':not(:visible)'],
// Should be =>
// You have to exclude only the disabled fields
// When you navigate between steps, the fields of the hidden steps
// will be hidden and not visible to Formvalidation plugin,
// thus you should include them.
excluded: [':disabled'],
我正在使用 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:Demo
在第 3 步(确认)我正在 post 到服务器端处理数据(产品库存、运输等)如果验证过程没有通过,请返回到第 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);
您的代码有一些错误:
1.
// Here, you should use `newIndex` instead of `curentIndex`
// Note that the index of the step goes from `0` to `count(steps) - 1`
if (newIndex === 2) {}
2。
// This
excluded: [':disabled', ':hidden', ':not(:visible)'],
// Should be =>
// You have to exclude only the disabled fields
// When you navigate between steps, the fields of the hidden steps
// will be hidden and not visible to Formvalidation plugin,
// thus you should include them.
excluded: [':disabled'],