【发布时间】:2015-05-15 14:49:01
【问题描述】:
我有一个问题困扰了我一段时间。这是一种返回不一致错误消息的表单。默认情况下,表单上的复选框不是强制性的,因此我强制它们使用以下代码:
$(function() {
var q = $("input[name='field_1']");
if (!$(q).is(':checked')) {
$(q).prop('required', true);
}
});
接下来的问题是,有一个隐藏类.error 获取字段的名称(例如名字),然后在此附加“是必需的”,从而导致用户友好的错误消息。此类仅在提交表单时出现在 DOM 上,似乎不喜欢复选框 - 我相信这是因为它没有任何东西可以放在“必需”前面。
这是它的外观快照。
<div class="comp_class" >
<label class='label_1 '>Competition</label>
<div class="control_1">
<div class="checkbox"><label><input type='checkbox' name='field_1' value='Yes' required class ="error"/> Yes</label>
<label for="field_1" class="error"> is required.</label>
"Yes"
对于更简单的字段(例如名字),错误类从包含在label_1 中的 HTML 中获取字段名称,这被拉到“必需”前面。其他字段在默认情况下是强制性的,其中令人沮丧的部分是我无法访问 HTML,否则这将非常简单,所以我为什么要尝试使用 jQuery 来访问和操作内容。
我尝试了类似的东西(在许多其他事情中!) -
$('#submit_button').click(function(){
$('.error').html("<p>This field is required</p>")
});
如果有人有任何建议,请发送给我。
【问题讨论】:
-
所以澄清一下,
<label for="field_1" class="error"> is required.</label>在提交后出现?它不是事先 dom 的一部分吗?此外,.error类同时在标签和复选框上... -
是的,它只在提交后出现。是的,我不确定为什么会这样,正如我提到的,我无法访问/控制 HTML 本身的结构。
-
不相关但为什么要让你的 var 成为 jquery 对象 ->
$(q)