2011-05-26 9 views
6

मुझे jQuery वैध फ़ंक्शन पर कोई समस्या है। आईई पर, यह काम नहीं करता है, वैध हमेशा सच लौटता है। client side validation with dynamically added fieldjQuery वैध फ़ंक्शन को आईई पर भरोसेमंद तरीके से कैसे काम करें?

यहाँ चार्ट है:: मैं इस कोड का इस्तेमाल किया

    Chrome  IE 

jquery-1.6.1  works  not working 
jquery-1.4.4  works  works 

1,6 IE पर भी काम नहीं करता। हालांकि, आईई पर 1.4.4 jQuery वैध काम करता है।

यहाँ (स्थानीय एचटीएमएल के रूप में परीक्षण इस) jsFiddle के अनुकूल परीक्षण है:

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

अद्यतन

मैं jsFiddle पर अपने कोड की कोशिश की, यह पक्ष प्रभाव, jQuery 1.6 है आईई पर काम कर रहा है वैध है। JsFiddle पर इस कोड का परीक्षण न करें। इस कोड को अपने स्थानीय एचटीएमएल

+2

आपने IE का किस संस्करण का उपयोग किया था? – reporter

+0

मैंने हाल ही में आपके द्वारा पाई गई गतिशील पार्स फ़ंक्शन का उपयोग किया है और मैं समस्या को दोहराने के लिए प्रतीत नहीं कर सकता, ऐसा लगता है कि सभी 1.6.1 और IE पर काम कर रहे हैं। शायद इसे संलग्न सत्यापन के साथ कस्टम इनपुट जोड़ने के तरीके से कुछ करना है। क्या आप इसे प्राप्त कर सकते हैं और JSFiddle पर चल रहे हैं? – Henry

+2

यह बहुत सी कोड है। इनमें से कुछ एचटीएमएल/जेएस भी नहीं है। यदि आप कोड की मात्रा को कम करते हैं तो आपको उत्तर पाने की अधिक संभावना होती है। –

उत्तर

5

पर इस समस्या का समाधान किया गया है। संस्करण 1.8.1 आज़माएं।

Download jQuery validation plugin

+0

दूसरी बार आज स्टैक ओवरफ्लो ने मुझे पागल होने से बचा लिया है! चियर्स! – Sniffer

+0

बिल्कुल सही। मुझे वही समस्या थी जहां आईई 8 में वैध कॉलिंग काम नहीं करती थी, लेकिन फ़ायरफ़ॉक्स में काम किया था। नवीनतम JQUery प्रमाणीकरण 1.8.1 डाउनलोड किया और मेरी समस्याएं चली गईं। धन्यवाद बेगी –

1

हाय मैं भी एक ही समस्या है और मैं अद्यतन किया है मेरी दोनों लिपियों नवीनतम एक फ़ाइल और सब कुछ मेरे पक्ष पर बहुत ठीक काम कर रहा है। Jquery.com पर जाएं और नवीनतम jquery कोड फ़ाइल की जांच करें।

संबंधित मुद्दे