复选框表单验证jQuery
我有一个表单,用户可以在其中选择事件列表,每个事件的开始时间都作为类名。提交表单时,我需要检查用户是否选择了多个具有相同开始时间的事件 e、 g.在今天,如果用户选择了事件A和事件C,则会触发验证消息复选框表单验证jQuery,jquery,html,validation,Jquery,Html,Validation,我有一个表单,用户可以在其中选择事件列表,每个事件的开始时间都作为类名。提交表单时,我需要检查用户是否选择了多个具有相同开始时间的事件 e、 g.在今天,如果用户选择了事件A和事件C,则会触发验证消息 <form> <h3>Today</h3> <input type="checkbox" name="date" class="starttime-1730" value="A" />Event A <input type=
<form>
<h3>Today</h3>
<input type="checkbox" name="date" class="starttime-1730" value="A" />Event A
<input type="checkbox" name="date" class="starttime-1600" value="B" />Event B
<input type="checkbox" name="date" class="starttime-1730" value="C" />Event C
<input type="checkbox" name="date" class="starttime-1630" value="D" />Event D
<h3>Tomorrow</h3>
<input type="checkbox" name="date" class="starttime-1830" value="A" />Event A
<input type="checkbox" name="date" class="starttime-1830" value="B" />Event B
<input type="checkbox" name="date" class="starttime-1930" value="C" />Event C
<input type="checkbox" name="date" class="starttime-2030" value="D" />Event D
<input type="submit" name="submit" />
</form>
今天
事件A
事件B
事件C
事件D
明天
事件A
事件B
事件C
事件D
首先,将开始时间放在数据属性中,而不是类中(这不是类的用途)。例如:
<input type="checkbox" name="date" data-starttime="1730" value="A" />Event A
我同意你的说法,时间不应该在类名中。但是当你创建自己的属性时,它是有效的xhtml吗?它是有效的HTML5:jQuery在内部使用它(看看带有firebug的jQuery UI元素,你会看到它们)。使用数据元素的好主意,我同意它更好,但不幸的是我不能使用HTML5。大多数浏览器都会毫无怨言地接受数据属性。你唯一会收到的投诉是来自验证器,你不应该真的听他们那么多。
<form id="form1">
<fieldset>
<caption>Today</caption>
<input type="checkbox" name="date" data-starttime="1730" value="A" />Event A
<input type="checkbox" name="date" data-starttime="1600" value="B" />Event B
<input type="checkbox" name="date" data-starttime="1730" value="C" />Event C
<input type="checkbox" name="date" data-starttime="1630" value="D" />Event D
</fieldset>
<fieldset>
<caption>Tomorrow</caption>
<input type="checkbox" name="date" data-starttime="1830" value="A" />Event A
<input type="checkbox" name="date" data-starttime="1830" value="B" />Event B
<input type="checkbox" name="date" data-starttime="1930" value="C" />Event C
<input type="checkbox" name="date" data-starttime="2030" value="D" />Event D
</fieldset>
<input type="submit" name="submit" />
</form>
function submit(){
$("#form1 fieldset").each(function(i){
var hashmap = {};
$("input:checked", $(i)).each(function(j){
var mytime = $(j).data("starttime");
if(hashmap[mytime] != undefined){
//Collision, report it or something
}else{
hashmap[mytime] = 1;
}
});
});
}