jQuery geçerli işleviyle ilgili bir sorunum var. IE'de, işe yaramıyor, geçerli her zaman doğrudur. jQuery geçerli işlevi IE'de güvenilir şekilde nasıl çalışır?
Chrome IE
jquery-1.6.1 works not working
jquery-1.4.4 works works
1,6
çok IE üzerinde çalışmıyor: client side validation with dynamically added fieldİşte grafik verilmiştir: Bu kodu kullanılır. Ancak, 1.4.4 jQuery IE'de geçerli çalışır. İşte
(yerel html olarak testi bu)<!--
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<form id="XXX">
<input type="submit" id="Save" value="Save">
</form>
<script type="text/javascript">
// sourced from https://stackoverflow.com/questions/5965470/client-side-validation-with-dynamically-added-field
// which I do think don't have a bug
(function ($) {
$.validator.unobtrusive.parseDynamicContent = function (selector) {
//use the normal unobstrusive.parse method
$.validator.unobtrusive.parse(selector);
//get the relevant form
var form = $(selector).first().closest('form');
//get the collections of unobstrusive validators, and jquery validators
//and compare the two
var unobtrusiveValidation = form.data('unobtrusiveValidation');
var validator = form.validate();
$.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
if (validator.settings.rules[elname] == undefined) {
var args = {};
$.extend(args, elrules);
args.messages = unobtrusiveValidation.options.messages[elname];
$('[name=' + elname + ']').rules("add", args);
} else {
$.each(elrules, function (rulename, data) {
if (validator.settings.rules[elname][rulename] == undefined) {
var args = {};
args[rulename] = data;
args.messages = unobtrusiveValidation.options.messages[elname][rulename];
$('[name=' + elname + ']').rules("add", args);
}
});
}
});
}
})($);
// ...sourced from others
// my code starts here...
$(function() {
var html = "<input data-val='true' " +
"data-val-required='This field is required' " + "name='inputFieldName' id='inputFieldId' type='text'/>";
$("form").append(html);
var scope = $('#XXX');
$.validator.unobtrusive.parseDynamicContent(scope);
$('#Save').click(function (e) {
e.preventDefault();
alert(scope.valid());
});
});
// ...my code ends here
</script>
GÜNCELLEME, bu yan etkiyi, jQuery 1.6 sahiptir geçerli IE üzerinde çalışıyor. Bu kodu jsFiddle'da test etme. Bu kodu yerel html adresinizde test edin
Hangi IE sürümünü kullandınız? – reporter
Son zamanlarda orada bulduğunuz dinamik ayrıştırma işlevini kullandım ve sorunu yinelemiyorum, her şey 1.6.1 ve IE üzerinde çalışıyor gibi görünüyor. Belki de ekli doğrulama ile özel bir giriş eklediğiniz yolla ilgili bir şey vardır. Bunu kaldırıp JSFiddle üzerinde koşabilir misiniz? – Henry
Bu bir çok kod. Bazıları HTML/JS bile değil. Kod miktarını en aza indirirseniz, bir cevap almanız daha olasıdır. –