【发布时间】:2013-08-06 03:27:06
【问题描述】:
简介
我正在开发一个有表格的 wordpress 网站。该表单的验证是使用 jQuery Inline Form Validation Engine 2.2 进行的。
我有一些单选按钮有两个选项是/否,然后是一个必填字段,只有在有人选择“否”时才会出现,以解释原因。类似于以下示例:
1 - “John Matrix”比“John Rambo”更酷吗?
→ 是的
否
2 - “突击队”是有史以来最好的电影吗?
是的
→ 没有
为什么不呢? _____________________________(* 必填)
所以,如果有人说“不”,就会出现“为什么不”字段:
if( $('#no_commando_field').is(':checked')) {
$('#why_not_field').show();
} else {
$('#why_not_field').hide();
}
问题
我的问题是“为什么不”字段是必需的,即使有人选择了“是”选项(就像它应该做的那样)。仅当先前的答案为“否”时,我才希望将此字段设为必填。
寻求解决问题
在探索代码时(我不是后端专家),我意识到内联表单验证引擎向必填字段添加了一个类,称为“validate[required]”。我尝试使用 jQuery 删除该类,但验证仍然发生。
var validate;
validate = $('#why_not_field').attr('class');
validate = validate.replace('validate[required]','not_validated');
$('#why_not_field').attr('class',validate);
if ( $('#no_commando_field').is(':checked')) {
validate = validate.replace('not_validated','validate[required]');
$('#why_not_field').attr('class',validate);
} else {
validate = validate.replace('validate[required]','not_validated');
$('#why_not_field').attr('class',validate);
}
类交换工作正常,但验证仍在进行中。尽管此解决方案在以前的表单上对我有用(仅在 wordpress 后台),但我不确定它是否是解决此问题的正确途径。
我希望有人指出我正确的方向,以便我可以更好地理解这个问题,以便解决它。提前致谢。
【问题讨论】:
-
使用相同的引号打开和关闭选择器。
.attr("class'),应该是.attr("class")。 -
很好看。但是,这不是我的真实代码,这只是一个示例。
-
我不知道“内联表单验证”,但从你所说的我假设它将所有元素推入 document.ready 的数组中。如果您只是检查必填字段中是否有内容,那么自己编写验证可以节省大量时间。
-
@Naoe 感谢您的回复,这听起来是个好主意。不幸的是,我目前没有时间或知识来做这样的事情,尽管我想这是我将来必须学习的东西。
-
好的,我已经为你添加了一个答案,如何创建一个简单的验证器。展示如何在不花费大量时间的情况下做到这一点。
标签: jquery wordpress forms validation