我们正在重新设计一个网站,其中一部分重新设计涉及使网站可供屏幕阅读器等访问。我使用的是最新版本(2.8.0)。这里发生了什么 - 对所有文本的验证,我们表单中的select和textarea字段完美运行。为了便于访问,复选框和无线电输入包含在标签中。一组复选框的html如下所示:
<div class="form-group">
<p id="applicant_type_desc" style="margin-bottom: 6px;"><strong>I am: <span class="text-danger" aria-hidden="true">*</span><span class="sr-only">Required</span></strong> <em class="small">(check all that apply)</em></p>
<div class="checkbox">
<label id="applicant_type_patient_desc">
<input type="hidden" name="applicant_type_patient" id="" value="N">
<input type="checkbox" name="applicant_type_patient" id="applicant_type_patient" value="Y" {checked_applicant_type_patient} aria-labelledby="applicant_type_desc applicant_type_patient_desc" data-parsley-multiple="type" data-parsley-error-message="Please specify whether you are a patient, relative, employee or other.">
A patient
</label>
</div>
后跟更多没有错误消息的复选框div,并以for form-group包装器的结束div结束。
如果我加载表单并点击“提交”,则会正确验证所有文本字段。如果我添加&#39; required&#39;到上面的复选框,当提交&#39;单击没有任何反应,表单提交时根本没有验证。
当我尝试根据需要验证单选按钮时,会发生同样的事情。
有一些自定义jQuery和parsley代码创建一个div来保存所有错误消息,并将错误消息转换为字段id的链接,以便屏幕阅读器可以跟随它们并专注于错误的字段。但是imho,这应该对表格验证没有起作用的原因没有影响。
我非常困惑。
仅供参考 - 我尝试使用早期版本(2.0.3)的欧芹并且验证确实有效,尽管我的所有自定义错误处理都被忽略了。
非常感谢任何见解。
答案 0 :(得分:0)
事实证明,parsley处理errorswrapper元素的方式与文本,textarea不同,然后选择它对复选框和单选按钮。
text,textarea和select的起始包装元素包含parsley-data-id属性,而checkbox和单选按钮元素包含parsley-data-multiple属性,无论是由parsley生成还是在html中手动输入。
我的代码正在寻找parsley-data-id,当然jquery选择器失败并生成错误。当我们在chrome检查员中查看页面时,一位同事能够为我发现这一点。一旦我看到错误,对表单进行简单的调整:错误事件功能允许一切正常工作。