Co wydaje się być normalnym przypadkiem użycia jQuery.validate z MDL poszło nie tak. Zobacz this gist.MDL + jQuery sprawdzania poprawności integracji: Obejście potrzebne do sprawdzania poprawności mdl-radio__
Działa to dobrze:
<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>
to robi nic:
<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>
Mocowanie jQuery.validator.setDefaults({ debug: true })
nie ma wpływu - jak w zerowy debugowania - w wersji MDL. Usunięcie mdl-js-radio
lub powoduje, że działa zgodnie z oczekiwaniami. Mam intuicję, że MDL aktualizuje DOM w sposób, który rozłącza dostęp jQuery do atrybutów name=
, ale nie mogę znaleźć żadnych dowodów na poparcie tego w kodzie źródłowym MDL.
Ktoś ma integrację, która działa tutaj?
Cytat: * "Mam intuicję, że MDL aktualizuje DOM w sposób, który rozłącza ..." * ~ prawdopodobnie tak jest; więc dlaczego nie skorzystać z narzędzia inspekcji DOM przeglądarki i dowiedzieć się? – Sparky
Zrobiłem, ale albo mój DOM-fu jest słaby, albo moja intuicja jest zła. – BrianTheLion
czy to tylko literówka, że nie pakujesz skryptu wersji mdl w funkcję jquery? – jcuenod