【发布时间】:2016-01-21 02:03:20
【问题描述】:
jQuery.validate 与 MDL 的正常用例似乎出现了问题。见this gist。
这很好用:
<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 }) 没有效果——就像在 zero 调试输出中一样——在 MDL 版本中。删除 mdl-js-radio 或 mdl-radio__button 使其按预期工作。我的直觉是 MDL 正在以一种断开 jQuery 对name= 属性的访问的方式更新 DOM,但我在 MDL 源代码中找不到任何证据支持这一点。
有人有一个可以在这里工作的集成吗?
【问题讨论】:
-
引用:“我的直觉是 MDL 正在以一种断开连接的方式更新 DOM……” ~ 可能是这样的;那么为什么不简单地使用任何浏览器的 DOM 检查工具并找出答案呢?
-
我做了,但是要么我的 DOM-fu 很弱,要么我的直觉错了。
-
您没有将 mdl 版本的脚本包装在 jquery 函数中只是一个错字吗?
-
是的,错字,谢谢!会更正。
标签: jquery jquery-validate material-design-lite