我已经对这个输入进行了验证。我认为。我无法设置任何中断,但它从$root.ValidationMessages.Object发送静态文本
下面是输入元素。
<input id="objectNumber" name="objectNumber" class="setsize ats-ccnumber valid"
type="text" placeholder="Number"
data-bind="value: PaymentOptions.Object.Number>我想要做的是,当验证失败时,以某种方式发送一个异步ajax调用,传递输入ID和由于验证失败而被删除之前输入的无效文本。这里是validateObject的KO处理程序
ko.bindingHandlers.validateObject = {
'init': function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = valueAccessor();
var message = value;
var when = function () { return true; };
if (value != null && typeof value == "object") {
if (value.when != null) {
when = function () {
if (typeof value.when == 'function') return value.when();
return value.when;
};
}
message = value.message;
}
addObjectValidation(when, getValueFor(message), element);
},
'update': function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
}};
这是addObjectValidation Javascript
function addObjectNumValidation(callback, message, element) {
$(element).rules("add", { required: function (x) { return !$(x).attr('disabled') && callback(); }, number2 : function () { return { objectType: $('#objectType').val(), required: !$(x).attr('disabled') && callback() }; }, messages: { required: message, creditcard2: message} });
var messages = $.data(element, 'validationMessages') || [];
messages.push(message);
$.data(element, 'validationMessages', messages);}
我看不出这在哪里被证实了。第一次接触Knockout。如果可能的话,有人能解释一下发生了什么吗?在验证失败之后,但是在字段被清除之前,如何发送ajax调用?
发布于 2014-07-20 16:25:20
验证是通过JQuery验证完成的。它完全独立于KnockoutJS,与之无关。
若要每次验证表单时获得验证失败,请侦听invalid-form事件,然后访问JQuery验证的errorList成员
$("form").on("invalid-form", function (e) {
console.log($(e.target).validate().errorList);
});顺便说一句,如果可能的话,我建议您将JQuery验证替换为Knockout验证。
发布于 2014-07-21 04:23:46
使用敲除-验证插件比使用JQuery验证本身要好得多。它支持使用AJAX调用进行远程验证。它还基于JQuery验证,因此大多数验证规则是相同的。
https://stackoverflow.com/questions/24836144
复制相似问题