2012-04-11 191 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">