gpt4 book ai didi

javascript - 缺少 ASP.NET 验证器

转载 作者:行者123 更新时间:2023-11-28 06:18:39 25 4
gpt4 key购买 nike

我有一个 ASP.NET 项目,其中包含一些带有表单的 View 。我想更改输入验证的触发器。此代码用于在按键时触发验证器,而不是失去焦点。

$(document).ready(function () {
var $validatr = $('form').data('validator');
var settngs = $validatr.settings;

settngs.onkeyup = function (element, eventType) {
if (!$validatr.element(element))
{
$(this.currentForm).triggerHandler("invalid-form", [this]);
}
};

settngs.onfocusout = false;
});

问题

在某些 View 上我收到此错误:

TypeError: $validatr is undefined, var settngs = $validatr.settings;

验证错误仅在失焦时出现。我尝试使用此代码获取验证器,但也失败了:

var $validatr = $('form').validate()

Controller 、模型和 View 几乎相同。只是输入的名称发生了变化。

更新如果我使用这段代码:

$(document).ready(function () {
var $validatr = $('form').validate();
var settngs = $validatr.settings;
console.log('settings:'); //I get an output
console.log(settngs); //I get an output

settngs.onkeyup = function (element, eventType) {
console.log(element); //I do not get any message here
console.log(eventType); //I do not get any message here

if (!$validatr.element(element)) {
console.log('if not validator');
$(this.currentForm).triggerHandler("invalid-form", [this]);
}
else {
console.log('else not validator');
}
};

// onload initial validation
$("form").validate().elements().each(function () {
if (!$validatr.element($(this))) {
console.log($(this)[0].name + ': initial if not validator');
$(this.currentForm).triggerHandler("invalid-form", [this]);
}
});
});

这是返回到控制台的设置:

errorClass:"error"
errorContainer:Object[]
errorElement:"label"
errorLabelContainer:Object[]
focusCleanup:false
focusInvalid:true
groups:Object:{}
ignore:":hidden"
ignoreTitle:false
messages:Object:{}
onsubmit:true
rules:Object:{}
validClass:"valid"
highlight:function(element,:errorClass,:validClass)
onclick:function(element)
onfocusin:function(element)
onfocusout:function(element)
onkeyup:function(element,:eventType)
unhighlight:function(element,:errorClass,:validClass)

解决方案

最终解决方案如下: MVC 5 Losing validator

最佳答案

除了我上面的评论之外,JavaScript 区分大小写,Validate() 应该是 validate()

var $validatr = $('form').validate();

查看此jsFiddle 。如果您在 Chrome 中使用检查,或在 FireFox 中使用 FireBug,您将在控制台中看到输出并且没有错误。

更新 1 - 我扩展了 jsFiddle 来模拟您在 onkeyup 上验证所需的效果。如果 this jsFiddle works 请告诉我为你。我还为所有元素添加了初始验证。

// onload initial validation
$("form").validate().elements().each(function(){
if (!$validatr.element($(this))) {
console.log($(this)[0].name + ': initial if not validator');
$(this.currentForm).triggerHandler("invalid-form", [this]);
}
});

关于javascript - 缺少 ASP.NET 验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com