似乎什麼是jQuery.validate的正常使用情況與MDL出了問題。請參閱this gist。MDL + jQuery驗證集成:變通需要MDL-radio__button驗證
這工作得很好:
<h1>Without MDL</h1>
<form id="foo">
<input type="radio" name="bar" value="1" /> 1
<input type="radio" name="bar" value="2" /> 2
<input type="submit" />
</form>
<script>
$(function() {
$('#foo').validate({
rules: {
"bar": {
required: true
},
},
errorPlacement: function(error, element) {
console.log(element);
}
});
});
</script>
這確實什麼:
<h1>With MDL</h1>
<form id="zha">
<label for="baz__1" class="mdl-radio mdl-js-radio">
<input type="radio" name="baz" value="1" id="baz__1" class="mdl-radio__button" /> 1
</label>
<label for="baz__2" class="mdl-radio mdl-js-radio">
<input type="radio" name="baz" value="2" id="baz__2" class="mdl-radio__button" /> 2
</label>
<input type="submit" id="butt"/>
</form>
<script>
$(function() {
$('#zha').validate({
rules: {
"baz": {
required: true
},
},
errorPlacement: function(error, element) {
console.log(element);
}
});
});
</script>
附加jQuery.validator.setDefaults({ debug: true })
沒有任何影響 - 在零調試輸出 - 在MDL版本。刪除mdl-js-radio
或mdl-radio__button
使其正常工作。我的直覺是,MDL正在更新在斷開jQuery的到name=
屬性訪問的方式,DOM,但我無法找到任何證據來支持,在MDL源代碼。
任何人得到了在這裏工作的整合?
報價:*「我的直覺是,MDL正在更新在斷開的方式DOM ......」 *〜這大概就是這樣的;那麼爲什麼不簡單地使用任何瀏覽器的DOM檢測工具,並找出? – Sparky
我做過了,但是我的DOM-fu很弱或者我的直覺錯誤。 – BrianTheLion
它只是一個錯字,你沒有在jquery函數中包裝mdl版本的腳本? – jcuenod