嘗試使用markdown來寫一篇blog,啦啦啦
源代碼傳送門:github
在特殊情況下我們使用jquery.validate.js對使用者輸入的内容做驗證的時候,表單并不是一定包含在form之中,有可能是一個div彈層,有可能是嵌套在form裡面的一個div,這個時候官方的validate就不能很好的支援了。對此,在官方的源代碼基礎上做小小的改動,就能相容原有form方式,也能使用于非form方式,何樂而不為呢。
分析官方代碼之後,能得知它都是通過element.form找到目前input的form,在從form标簽擷取validate對象。那隻要我們修改為我們指定的容器标簽即可。
修改代碼如下:
1.增加一個擷取容器的方法
getContainer: function (element) {
var container = $(element).closest('.validateContainer')[0];
container = container || element.form;
return container;
}
2.替換所有使用element.form為$.validator.getContainer(element)
demo:
<div id="x" class="validateContainer">
<input data-rule-required="true" data-rule-number="true" data-rule-digits="true" acc="x" Acc2="xx" AcAc="3" acAc="4" name="xx" />
<input type="submit" value="submit" />
</div>
<script src="jquery-3.1.0.js"></script>
<script src="jquery.validate.js"></script>
<script>
$("#x").validate();
</script>
當然,相容性等尚未進行測試,經供參考
ps:話說markdown還是蠻好用的