我确实有2个bvalidator实例(http://bmauser.github.io/bvalidator - 如果有人不知道的话)在我的表单上运行。
第一个实例验证所有表单,第二个实例部分验证但是相同的表单。
表单上有2个buttons
:
第一个按钮保存表单数据,如果它确实使用第一个实例验证它。
第二个按钮应该在第二个验证实例为真时保存表单。
但是,我无法弄清楚如何禁用一个实例并运行另一个实例。
例如,我的表单中有这个输入:
<input id="recordId" name="recordId" type="text" value="$!currentmm.recordId" data-bvalidator="digit,required" data-bvalidator-modifier="myDigitsModifier" data-secondinstance="digit,required" data-secondinstance-modifier="myDigitsModifier" />
正如您所看到的,它有2个bvalidator
实例。默认值:bvalidator和secondinstance。
我使用此代码:
$('#myForm').data('bValidator').destroy(); // I destroy the first instance
$('#myForm').data('bValidators').secondinstance.validate(); //initialize the second instance
if ($('#myForm').data('bValidators').secondinstance.isValid()) {
//if the second instance is valid the do some job
}
但是id不起作用。当我销毁first
实例时,它似乎销毁整个bvalidator instance
..
编辑:
例如,这是我表单的一部分,并且我为相同的输入框添加了2个bvalidator实例,其条件与bvalidation相同:
<h1><label style="width:350px;";>$i18n.getString( "marriage_record" )</label>
<label style="font-size:8pt;";>$i18n.getString( "record_number" ) </label>
<input id="recordId" name="recordId" type="text" value="$!currentMarriage.recordId" data-bvalidator="digit,required" data-bvalidator-modifier="myDigitsModifier" data-secondinstance="digit,required" data-secondinstance-modifier="myDigitsModifier" class="dontcheck"/>
<label style="font-size:8pt;width:200px;";>$i18n.getString( "registration_date" ) </label>
<input id="registrationDate" name="registrationDate" type="text" value="$!vfh.formatDateForInput($!currentMarriage.registrationDate)" data-bvalidator="required" data-secondinstance="required" class="dontcheck" />
</h1>
那么,我接下来在代码中做了什么:
点击第一个按钮后,我打电话:
$('#addMarriageRecordForm').data('bValidator').destroy();
我认为该调用会破坏bvalidator的第一个实例。然后我称之为:
$('#addMarriageRecordForm').data('bValidators').secondinstance.validate();
根据我的逻辑,现在它必须使用secondinstance验证表单,但不幸的是,一旦我销毁了bvalidator的第一个实例,它就会抛出错误。这就是我想要做的事情,多实例。
当前版本的bvalidator是否支持?我读了js代码,我想一旦我调用destroy函数它就会破坏bvalidator的所有实例..它的工作方式是什么?我认为如果我们可以根据需要禁用/启用某个特定的bvalidator实例,那应该是非常棒的。
答案 0 :(得分:1)
您可以使用以下方式调用验证:
$('#button1').on('click', function() {
if ($('#myForm').data('bValidator').validate()) {
// save form
...
}
}
如果您需要在验证后提交表单,则可以对data-secondinstance-option-validate-on-submit="false"
元素上具有data-bvalidator-option-validate-on-submit="false"
和<form>
属性的实例的提交事件禁用验证。如果#button1
是提交按钮,则代码可以是:
var skipFirstInstance = false;
$("form").submit(function(e) {
if(skipFirstInstance)
return;
if ($('#myForm').data('bValidator').validate()) {
// save form
...
}
else{
e.preventDefault();
}
});
$('#button2').on('click', function() {
if ($('#myForm').data('bValidators').secondinstance.validate()) {
// save form
...
// disable first instance validation
skipFirstInstance = true;
// submit the form
$('form').submit();
}
}