复选框表单验证jQuery

复选框表单验证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=

我有一个表单,用户可以在其中选择事件列表,每个事件的开始时间都作为类名。提交表单时,我需要检查用户是否选择了多个具有相同开始时间的事件

e、 g.在今天,如果用户选择了事件A和事件C,则会触发验证消息

<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;
      }
    });
  });
}