2012-03-02 90 views
0

今天是我第一次尝试使用jQuery Validation插件。我的表单用于验证GPS坐标。jQuery Validation插件没有捕获错误

这里是我的规则和消息:

$(document).ready(function() { 
    // validate form when called 
    var validator =$("#box-registration").validate({ 
     rules: { 
      latitude: { 
       min: 0, 
       max: 90, 
       number: true 
       }, 

      longitude { 
       min: 0, 
       max: 180, 
       number: true 
       }, 

      geo_dms { 
       min: 0, 
       max: 59, 
       number: true 
       } 
      }, 
     messages: { 
      latitude: "Latitude must be between 0 and 90", 
      longitude: "Longitude must be between 0 and 180", 
      geo_dms: "Degree minutes and seconds must be between 0 and 59" 
      } 
     }); 
    }); 

这里是我试图验证表单的一部分。我试图应用验证的元素的“地球LAT-DD”和“地理LON-DD”:

 <div id="geo-format-dd"> 
      <dl> 
      <dt><label class="labelstandard">Latitude</label></dt> 
      **<dd><input id="geo-lat-dd" name="geo-lat-dd" type="text" class="latitude textinput100 nonewrow"/></dd>** 
      <dd class="nonewrow"> 
       <input type="radio" name="latDD" id="latDDN" checked="checked" value="N" class="nonewrow" /><label class="nonewrow" for="latDDN">N</label> 
       <input type="radio" name="latDD" id="latDDS" value="S" class="nonewrow" /><label class="nonewrow" for="latDDS">S</label> 
      </dd> 
      </dl> 

      <dl class="newrow"> 
      <dt><label class="labelstandard">Longitude</label></dt> 
      **<dd><input id="geo-lon-dd" name="geo-lon-dd" type="text" class="longitude textinput100 nonewrow" /></dd>** 
      <dd class="nonewrow"> 
       <input type="radio" name="lonDD" id="latDDW" checked="checked" value="W" class="nonewrow" /><label class="nonewrow" for="lonDDW">W</label> 
      </dd> 
      </dl> 
     </div> 

两个元素有类“纬度”和“经度”应用,而我的验证插件规则包括那些类(也有度数分秒的字段,所以我试图重用类而不是使用ID)。

当我使用字段中的值9999验证表单时,不会显示错误消息。使用Firebug,我已经完成并确认验证代码正在运行,但它不会返回任何异常。

在规则,我也试图把一个点的选择,坠毁在页面的前面,还与一段引号引起的,像“.latitude”

可有人请点我在正确的方向弄清楚我做错了什么?

回答

1

有几个问题:

  1. 要调用validate上并不在你的样品标记存在选择#box-registration
  2. 您的rules选项应该在表单元素名称上键入。文件不清楚;他们似乎暗示规则可以自动匹配类名,但我认为这不能按照您尝试的方式完成。
  3. 您的JavaScript有一些语法错误。特别是,您在规则对象中缺少冒号。

我创建了this Fiddle以显示使用这些更正的验证。

+0

感谢您的意见。我猜最近12小时工作的时间太多了,可能会犯一些像缺少冒号的错误,并且不会发布我的代码的相关部分(#box-registration在我的文件中存在)。我会尝试将您的建议整合到我的代码中。 – 2012-03-05 16:05:45

+0

我能够测试你的建议,它的工作原理。谢谢。有趣的是,我发现这些消息可以通过CSS类来分配,但正如你所说的,这些规则似乎需要通过元素ID来分配。 – 2012-03-06 15:36:58

+0

修改我以前的评论 - 它实际上*不*通过CSS类显示我的消息。只是我的自定义消息非常接近默认值,我没有注意到它们之间的差异。 – 2012-03-14 18:16:47