- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在验证了两个特定字段后删除表单上的验证消息。
我可以在一个字段成功验证时执行此操作,但当多个字段(甚至可能是一组)已被验证时我将如何执行此操作?
下面是我想要完成的
$.listen('parsley:field:success', function (parsleyField) {
if ((parsleyField.$element.attr('name') == 'field1')) && ((parsleyField.$element.attr('name') == 'field2')){
$(".tab-nav-1").removeClass("tab-validation-error")
}
});
有没有办法在验证一组字段时执行某些操作(即使表单未验证)?
最佳答案
这不起作用,因为 parsleyField
仅与一个字段相关联。也就是说,如果您有一个包含两个(有效)输入的表单,则该函数将为每个输入执行一次。
更新的解决方案
查看Parsley's events事实证明,您可以使用 parsley:form:validated
,它在执行表单验证后触发。使用此事件大大简化了解决方案,因为您可以简单地检查输入是否有效。这是您需要的代码 ( jsfiddle available ):
$.listen('parsley:form:validated', function (parsleyForm) {
var isValidField1 = $("input[name=field1]").parsley().isValid(),
isValidField2 = $("input[name=field2]").parsley().isValid();
if (isValidField1 && isValidField2) {
$(".tab-nav-1").removeClass("tab-validation-error");
} else {
$(".tab-nav-1").addClass("tab-validation-error");
}
});
原始解决方案
您可以创建一个数组来存储输入字段并在它们变得无效时将其删除。然后,每次执行验证时,只需检查数组中是否存在字段,如果存在,则删除该类。否则,添加类。
诚然,解决方案并不像人们希望的那样直接。看看下面的代码 ( jsfiddle available )
// this will store our valid fields
var validFields = [];
$("form").parsley();
// whenever a field is valid
$.listen('parsley:field:success', function (parsleyField) {
// add this field's name to the array
addToArray(parsleyField.$element.attr('name'));
// Do we have both fields within the array?
if ($.inArray('field1', validFields) != -1 && $.inArray('field2', validFields) != -1) {
// If so, remove the class
$(".tab-nav-1").removeClass("tab-validation-error");
} else {
// Otherwise, add the class. There could be a time
$(".tab-nav-1").addClass("tab-validation-error");
}
});
// Whenever an error occurs, lets remove the field from the array
$.listen('parsley:field:error', function (parsleyField) {
removeFromArray(parsleyField.$element.attr('name'));
});
/**
* Adds a string to an array
*/
function addToArray(fieldName) {
// For our case, we're just adding the value if it matches our fields
if ($.inArray(fieldName, validFields) === -1 && (fieldName == 'field1' || fieldName == 'field2')) {
validFields.push(fieldName);
}
}
/**
* Removes a string from an array
*/
function removeFromArray(fieldName) {
// For this case, we discard the fields that don't match the fields we need
if (fieldName != 'field1' && fieldName != 'field2')
return;
// So, add the field if it doesn't exist in the array
if ($.inArray(fieldName, validFields) != -1) {
for(var i = validFields.length - 1; i >= 0; i--) {
validFields.splice(i, 1);
}
}
}
关于javascript - 在 'parsley:field:success' 上使用多个 Parsley Field 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481075/
我还有其他自定义验证器。当 Parsley 验证使用它们时,它会根据需要添加 CSS 类 parsley-success 或 parsley-error。如果only验证器是我的自定义验证器之一,它们
我正在寻找一种对一组输入字段使用单个欧芹验证错误消息的方法。这方面的主要示例是地址输入字段,但我相信其他人可以想出类似的示例,这可能会有用。 现在使用上面的代码会导致 3 条不同的错误消息,但
我有最简单的表单和最简单的自定义验证器,但它不起作用,请参阅 http://jsfiddle.net/M55M4/怎么了? $('#myform').parsley({
如何告诉 parsley-Instance 排除不可见的表单元素? 我在文档中找到了这个: data-parsley-excluded="input[type=button], input[type=
我的 2 个元素有 2 个欧芹配置。 A.xml B.xml 我的问题是如何使两个配置中的“
我已经排除了一个输入,并且它添加了成功类(我不介意)$('form').parsley({ 排除: '[data-parsley-sum-total="all"]' });但还有许多其他输入没有验证,
我正在尝试在验证了两个特定字段后删除表单上的验证消息。 我可以在一个字段成功验证时执行此操作,但当多个字段(甚至可能是一组)已被验证时我将如何执行此操作? 下面是我想要完成的 $.listen('pa
我有一个包含时间输入的表格。时间输入被破坏,因为我有欧芹验证。该框架在输入下采用 -Tag 进行验证。这个 -Tag 破坏了我的 html/css 结构。 看这里我的问题: 我想要这个结构: 这是我的
当我检查我的表单时,它在控制台中显示“Y”。但是我没有选择任何复选框。 在官方文件中,它说: checkbox need to have either a name or an id attribut
我正在使用 Parsley.js 来验证表单。我的要求是我不能显示错误信息。我只需要突出显示输入字段或选择元素的边框。当 data-parsley-errors-messages-disabled 出
我对Parsley.js框架有疑问。 我的问题是密码和密码确认输入相同,但是如果单击提交按钮,我会收到一条错误消息。 这是我的测试站点: http://topkosmetikstudios.de/re
我正在使用 Parsley.js用于验证项目的表单提交。我的需求之一是让 Parsley 要求三个字段中至少有一个包含数据,并且只有在三个字段都没有数据时才会失败验证。 我从文档中不确定如何完成此操作
我需要访问正在欧芹自定义验证器中测试自定义规则的元素。换句话说,我需要这样的东西: window.Parsley.addValidator('uniqueInn', { validateStr
我有以下输入字段: 以及以下脚本: jQuery('#UserLogin').parsley().addAsyncValidator('validateUsername', function (xh
我需要访问正在欧芹自定义验证器中测试自定义规则的元素。换句话说,我需要这样的东西: window.Parsley.addValidator('uniqueInn', { validateStr
我使用欧芹实现了一个多步骤表单,我需要验证验证码。第一个问题是 recaptcha 是由函数 recaptcha_get_html($publickey) 生成的,因此我无法在 input 元素中手动
我有一个包含两组字段的表单: “联系方式”(17 个字段) “公司信息”(5个字段) 有一个 radio 问“你有公司吗?”与公司信息有关。如果单选为"is",则必须填写并验证公司字段。如果单选为“否
是否可以使用 Parsley 添加自定义多重验证(即依赖于多个输入的单一验证)? 我有时想验证 或整个部分并在该级别而不是在 提供错误等级。 例如,想象一个带有 的表单。允许用户输入颜色和尺寸的不
Email address $(function(){ $('#f').parsley('validate');
parsleyjs是否有一种简单的方法可以根据另一个字段来创建一个必填字段? 在这里看到我的js fiddle http://jsfiddle.net/marksteggles/wbhLq0t4/1/
我是一名优秀的程序员,十分优秀!