2012-04-11 197 views
0

我知道这是假设(根据插件页面反正)jQuery的验证插件 - 没有验证

但我想使用的插件,但没有成功是简单的,这里是我的形式:

<form id="mongoForm"> 
     <label for="skip">skip:</label> <input type="text" id="skip" 
      style="width: 70px"> 
     <p /> 
     limit: <span id="limitLable" style="border: 0">1</span> 
     <div id="limit" style="width: 250px"></div> 
     <p /> 
     <label for="collection">collection: </label> <input type="text" 
      id="collection"> 
     <p /> 
     <label for="sort">sort: </label> <input type="text" id="sort"> 
     <p /> 
     <label for="type">type: </label><select id="type"> 
      <option value="find" selected="selected">find</option> 
      <option value="count">count</option> 
     </select> 
     <p /> 
     <label for="query">query: </label> 
     <textarea rows="10" cols="80" id="query"></textarea> 
     <input type="submit" value="execute" id="execute"> 
    </form> 

和我的jQuery脚本:

$(document).ready(function() { 
    $.validator.addMethod("validJson", function(value, element) { 
     try { 
      var val = $.parseJSON(value); 
      return true; 
     } catch (e) { 
      return false; 
     } 

    }, "Invalid JSON string"); 
    $("#mongoForm").validate({ 
     rules : { 
      collection : { 
       required : true 
      }, 
      query : { 
       validJson : true 
      } 
     }, 
     submitHandler : function(form) { 
      queryServer(); 
     } 
    }); 

但是,验证无法正常工作。 如果我将一个class =“required”添加到输入中,它适用于自定义验证,但不适用于我的自定义validJson方法。但这并不能解决我的问题,因为一些字段不是必需的我只需要验证可选值

任何想法请吗?

回答

1

你需要的名字属性,如the general guidelines:

解释name属性需要输入元素,验证 插件不无它的工作。通常名称和ID属性应该是 具有相同的值。

这样的标记应该是

<label for="collection">collection:</label> 
<input type="text" id="collection" name="collection">