2011-05-26 17 views
6

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) jsFiddle dostu testi var: Ben jsFiddle benim kod çalıştı

<!-- 
<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

+2

Hangi IE sürümünü kullandınız? – reporter

+0

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

+2

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. –

cevap

5

Bu sorun çözüldü. 1.8.1 sürümünü deneyin.

Download jQuery validation plugin

+0

İkinci kez bugün stackoverflow beni çıldırmaktan kurtardı! şerefe! – Sniffer

+0

Mükemmel. Çağrının geçerli olmasının IE 8'de çalışmadığı, ancak FireFox'ta çalıştığı aynı sorunu yaşadım. En son JQUery Validation 1.8.1 sürümünü indirdim ve sorunlarım gitti. Teşekkürler beygi –

1

Merhaba ben de aynı sorun var ve ben her iki komut dosyaları en geç birine dosyasını güncelledik ve her şey yanımda çok iyi çalışıyor. Jquery.com adresine gidin ve en son jquery kod dosyasını kontrol edin.

İlgili konular