JQuery Подтвердить плагин v1.10, подтверждающий (требующий) все входы в IE8
Я использую текущую версию jQuery (1.8.3) и последнюю версию проверки jQuery (1.10.0), и кажется, что в Internet Explorer 8 проверка правильности jquery проверяет все входы на форме, являющейся а не только с определенными правилами. Он отлично работает в других браузерах (IE9 +, FF, Chrome), и он отлично работает, если я использую jQuery validate 1.9.0.
Вот пример, демонстрирующий проблему:
<!DOCTYPE html>
<html>
<head>
<title>IE8 + jQuery Validate 1.10 Test</title>
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
<script type='text/javascript' src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js'></script>
</head>
<body>
<div>
<form id="my-form">
<label for="my-required-field">required:</label>
<input id="my-required-field" type="text" name="reqField" />
<label for="my-optional-field">optional:</label>
<input id="my-optional-field" type="text" name="optField" />
<input id="wh-submit-button" type="submit" value="submit" />
</form>
</div>
<script type="text/javascript">
$(document).ready(function () {
var form = $("#my-form");
var validator = form.validate({
rules: {
"reqField": { required: true }
},
messages: {
"reqField": { required: "this field is <i>actually</i> required" }
}
});
$("#wh-submit-button").click(function () {
if (validator.form()) {
alert('passed validation');
}
});
});
</script>
</body>
</html>
В IE8 предупреждение "пройденное подтверждение" не будет срабатывать, а дополнительное поле будет помечено как необходимо.
Если я явно отмечу необязательное поле как не обязательное, оно работает правильно:
rules: {
"reqField": { required: true },
"optField": { required: false }
}
Однако, конечно, субоптимально, чтобы отмечать каждый элемент ввода, который не требуется явно как необязательный, и который, как я знаю, никогда не был предыдущим требованием.
Я знаю, что были проблемы с более ранними версиями jquery и jquery validate, но они были якобы решены с помощью jQuery validate 1.8.1 - я поднимаю эту проблему, поскольку она, похоже, связана с последними версиями jquery и validate плагин.
UPDATE:
Таким образом, проблема возникает только для того, чтобы проявляться при использовании инструментов разработчика Internet Explorer F12 для эмуляции поведения IE8. Основываясь на замечании, предполагающем, что фактическая проблема с образцом, который я предоставил в IE8, я построил полную виртуальную машину Windows с подлинной установкой Internet Explorer 8 и, по сути, проблем не было. Несмотря на очевидные различия между эмулятором и реальностью, я никогда раньше не видел такой проблемы с эмуляцией JavaScript и был брошен в результате того, что он внезапно начал происходить с jQuery Validation 1.10.
Поскольку это только проблема с эмуляцией, а не настоящая вещь, здесь нечего решать; и я должен был сообщить, что именно с помощью эмулятора в первую очередь... но, возможно, кто-то другой попадет в ту же ловушку, и это будет полезной ссылкой.
Ответы
Ответ 1
Попробуйте это вместо...
jsFiddle DEMO с использованием встроенного jQuery 1.8.2
jsFiddle DEMO с помощью jQuery 1.8.3
$(document).ready(function() {
var form = $("#my-form");
var validator = form.validate({
rules: {
"reqField": {
required: true
}
},
messages: {
"reqField": {
required: "this field is <i>actually</i> required"
}
},
submitHandler: function(form) {
alert('passed validation');
// form.submit();
}
});
});