使用 "formvalidation.io" 验证动态输入字段
Validate Dynamic input filed with "formvalidation.io"
我正在使用插件 Form Validation 来验证表单。这个插件非常棒。
但我在验证动态生成的输入时遇到问题。
以下代码用于动态生成输入字段
$("#countaccmp").change(function() {
var selVal = $(this).val();
$("#textboxDiv").html('');
if(selVal > 0) {
for(var i = 1; i<= selVal; i++) {
$("#textboxDiv").append('<input type="text" name="accmp'+i+'"
id="accmp'+i+'" class="form-control " />');
}
}
})
我尝试使用如下插件进行验证:
$('#form').formValidation({
//--------- Plugin Validator Method -----------//
})
.on('change', '[name="countaccmp"]', function(e) {
//---- Wrote validation here, It works(only on change) but form is getting submitted
even after error ----//
$('.dynDiv').each(function(){
var input = $(this).children('input');
var dynField =
($(this).find("input[name^='accmp']").attr('name'));
if(input.val() == '' || input.val() == undefined){
alert("Error");
return false;
}
})
.on('success.form.fv', function(e) {
//---- Wrote validation here, It works but form is getting
submitted even after error ----//
Same Validation As above
})
请告诉我解决方案。
您应该将您的输入添加到插件中以进行验证。
为此,请使用 addField
方法,见下文:
$("#countaccmp").change(function () {
var selVal = $(this).val();
$("#textboxDiv").html('');
if (selVal > 0) {
for (var i = 1; i <= selVal; i++) {
var input = ''
+ '<div class="form-group">'
+ ' <label class="col-sm-3 control-label" for="accmp' + i + '">Accmp ' + i + '</label>'
+ ' <div class="col-sm-5">'
+ ' <input type="text" name="accmp' + i + '" id = "accmp' + i + '" class = "form-control " / >'
+ ' </div>'
+ '</div>';
$("#textboxDiv").append(input);
$('#defaultForm').formValidation('addField', 'accmp' + i, {
validators: {
// Here, add your field validators.
}
});
}
}
});
演示:
参考文献:
- 添加字段文档:http://formvalidation.io/api/#add-field
- 使用
addField
的示例:http://formvalidation.io/examples/adding-dynamic-field/
我正在使用插件 Form Validation 来验证表单。这个插件非常棒。
但我在验证动态生成的输入时遇到问题。
以下代码用于动态生成输入字段
$("#countaccmp").change(function() {
var selVal = $(this).val();
$("#textboxDiv").html('');
if(selVal > 0) {
for(var i = 1; i<= selVal; i++) {
$("#textboxDiv").append('<input type="text" name="accmp'+i+'"
id="accmp'+i+'" class="form-control " />');
}
}
})
我尝试使用如下插件进行验证:
$('#form').formValidation({
//--------- Plugin Validator Method -----------//
})
.on('change', '[name="countaccmp"]', function(e) {
//---- Wrote validation here, It works(only on change) but form is getting submitted
even after error ----//
$('.dynDiv').each(function(){
var input = $(this).children('input');
var dynField =
($(this).find("input[name^='accmp']").attr('name'));
if(input.val() == '' || input.val() == undefined){
alert("Error");
return false;
}
})
.on('success.form.fv', function(e) {
//---- Wrote validation here, It works but form is getting
submitted even after error ----//
Same Validation As above
})
请告诉我解决方案。
您应该将您的输入添加到插件中以进行验证。
为此,请使用 addField
方法,见下文:
$("#countaccmp").change(function () {
var selVal = $(this).val();
$("#textboxDiv").html('');
if (selVal > 0) {
for (var i = 1; i <= selVal; i++) {
var input = ''
+ '<div class="form-group">'
+ ' <label class="col-sm-3 control-label" for="accmp' + i + '">Accmp ' + i + '</label>'
+ ' <div class="col-sm-5">'
+ ' <input type="text" name="accmp' + i + '" id = "accmp' + i + '" class = "form-control " / >'
+ ' </div>'
+ '</div>';
$("#textboxDiv").append(input);
$('#defaultForm').formValidation('addField', 'accmp' + i, {
validators: {
// Here, add your field validators.
}
});
}
}
});
演示:
参考文献:
- 添加字段文档:http://formvalidation.io/api/#add-field
- 使用
addField
的示例:http://formvalidation.io/examples/adding-dynamic-field/