2014-01-15 66 views
0

使用JQuery驗證驗證隱藏字段由於使用預輸入(設置上選擇隱藏字段)和rateit插件(在某些設置隱藏字段)jQuery驗證聚焦到隱藏字段無效

他們正在驗證罰款和我有錯誤信息顯示並正確清除。

問題是,如果其中一個字段是第一個無效字段,它不會因爲元素被隱藏而無法集中。

任何人都知道解決這個問題的方法?

感謝

+1

呃...是的。我知道這是隱藏的,但它與如上所述的表單上顯示的實際字段有關。所以有一個地方需要重點驗證,但不知道它。 – Jason

回答

1

結束了這樣做,它運作良好。我添加的屬性我隱藏輸入

例:

<input name='whatever" class="required" focusID="ID_TO_FOCUSTO" value=""> 

然後添加到了驗證。如果它是可見的,它就像正常情況一樣專注於該元素。如果不是,則它將焦點集中到隱藏輸入上的屬性focusID的ID。

invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      if($(validator.errorList[0].element).is(":visible")) 
      { 
       $('html, body').animate({ 
        scrollTop: $(validator.errorList[0].element).offset().top 
       }, 1000); 
      } 
      else 
      { 
       $('html, body').animate({ 
        scrollTop: $("#" + $(validator.errorList[0].element).attr("focusID")).offset().top 
       }, 1000); 
      } 
     } 
    } 
+0

這樣做不錯,不要將無效屬性放入標記中,而是更喜歡滾動到附近的任何元素'.errorList [0] .element'。儘管如此,值得讚賞。 –

1

你可以做現場事先鍵入的內容自定義規則,驗證包含的id值隱藏字段。所以如果它是無效的,重點將放在前面的字段。

jQuery.validator.addMethod("myCustomValidate", function() { 
     //check if hidden field has a value 
     return $("#hiddenFieldId").value); 
    }, "You must be select a item"); 


$('validatorElement').validate({ 
    ignore: "", 
    rules : { 
     typeaheadElement: { myCustomValidate: true } 
    } 
}); 
+0

謝謝。爲typeahead工作,但最終與下面的解決方案一起爲typeahead和rateit工作。 – Jason

+0

僅供參考上述代碼中存在語法錯誤。試圖建議編輯,但由於某種原因它被拒絕。 ()# return $(「#hiddenFieldId」)value)應該返回$(「#hiddenFieldId」)。val() – Jason