我有一个表单模板,它绑定到视图模型。所有字符串(标签和验证消息)都在视图模型中设置。
表单字段也有验证,到目前为止,简单的验证工作正常。但是,我还想添加自定义验证规则。问题是,调用validate
方法时,自定义验证规则永远不会被命中。
以下是代码:
<div data-template="div-template" data-bind="source: this" id="mytemplate">
<script id="div-template" type="text/x-kendo-template">
<div class="demo-section k-content">
<div>
<form id="ui_test_form" data-role="validator" novalidate="novalidate">
<div class="form-group">
<label id="lbl_salary" class="label-caption">#=strings.salary#</label>
<input id="salary" name="Salary" type="number" value="" min="1" data-type="number" required validationMessage="#=strings.salaryRequired#" style="margin-right: 35px; "/>
<span data-for='salary' class='k-invalid-msg'></span>
</div>
<div class="form-group">
<label id="lbl_startdate" class="label-caption">#=strings.startDate#</label>
<input type="text" id="StartDate" data-role='datepicker' name="StartDate" data-type="date" required validationMessage="#=strings.startDateRequired#" />
<span data-for='StartDate' class='k-invalid-msg'></span>
</div>
<div class="form-group">
<label id="lbl_enddate" class="label-caption">#=strings.endDate#</label>
<input type="text" id="EndDate" data-role='datepicker' name="EndDate" data-type="date" required validationMessage="#=strings.endDateRequired#" data-enddate-msg="End date should be after start date" />
<span data-for='EndDate' class='k-invalid-msg'></span>
</div>
<div class="form-group row">
<label class="label-caption"></label>
<button class="k-button col-md-6" type="button" value="Submit" data-bind="click: save">#=strings.validate#</button>
</div>
</form>
</div>
</div>
</script>
</div>
<script>
$(function () {
var strings = {
salary: "Salary",
startDate: "Start Date",
endDate: "End Date",
endDateInvalid: " End Date should be after start date",
salaryRequired: " Salary is required",
startDateRequired: " Start Date is required",
endDateRequired: " End Date is required",
validate: "Validate"
};
var formViewModel = kendo.observable({
strings: strings,
save: function(){
var validator = $("#ui_test_form").kendoValidator().data("kendoValidator");
if(validator.validate()){
debugger;
}else{
debugger;
}
}
});
kendo.bind($("#mytemplate"), formViewModel);
function initializeComponents(){
$("#salary").kendoNumericTextBox({ format: 'c' });
var container = $("#mytemplate");
container.kendoValidator({
rules: {
greaterdate: function (input) {
//I want to compare start and end date here, this function never gets called
debugger;
}
}
});
}
initializeComponents();
});
</script>
以下是Dojo
中的工作示例对此有何想法/建议?
答案 0 :(得分:2)
它受到了打击。当您在Dojo中运行此功能时,您的Chrome上的F12开发者工具是否已打开?因为调试器要触发它必须打开。此外,您必须更改输入并在输入外单击,我保证它会命中。试试这个Dojo