2009-03-23 16 views
6

मुझे आश्चर्य है कि jQuery सत्यापनकर्ता प्लगइन उन तत्वों को मान्य करता है जो नियमों को प्रारंभ में सेट करते समय डोम में मौजूद नहीं हैं।jquery अभी तक बनाए गए तत्वों पर मान्य नहीं है

नियमों को कॉल करना ("जोड़ें", थूल्स) विधि केवल उन तत्वों के नियमों को जोड़ती है जो वर्तमान में डोम में मौजूद हैं। अगर मैं कुछ बनाना चाहता था। सत्यापन आग नहीं है। कोई विचार? सत्यापनकर्ता मैं उपयोग कर रहा हूँ की

होमपेज: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

नए तत्व http://ejohn.org/blog/javascript-micro-templating/

के माध्यम से बनाए जा रहे हैं असल में वहाँ एक ajax कॉल है और सर्वर json के एक झुंड देता है, इस json तंग आ गया है (ajaj?) रेजिग के टेम्पलेटिंग इंजन के माध्यम से। एक उदाहरण टेम्पलेट तो दिखाई देता है:।

<script type="text/html" id="ProductsTemplateEdit"> 
    <td> 
     <input type="hidden" value="<#= item.ID #>" id="Edit.ID" name="Edit.ID" /> 
     <input type="text" value="<#= item.Price#>" id="Edit.Price" name="Edit.Price" /> 
    </td> 
</script> 

मूल्यों जाहिर json कि में पारित हो जाता है के माध्यम से भर दिए गए हैं

मैं भी है कि मैं xval प्रमाणीकरण फ्रेमवर्क, जो मूल रूप से स्वत: जनरेट करता उपयोग कर रहा हूँ उल्लेख करना चाहिए jQuery मेरे लिए नियमों को मान्य: http://blog.codeville.net/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/

+0

आप अपनी वस्तुओं को कैसे जोड़ रहे हैं? क्या आप एक कोड नमूना प्रदान कर सकते हैं? क्या आप अपने प्रश्न में अपने jQuery वैलिडेटर प्लगइन से लिंक भी कर सकते हैं? अधिक जानकारी के साथ – bendewey

+0

प्रश्न अद्यतन – ChadT

उत्तर

2

ठीक है, दो की कोशिश में देखना चाहते हैं। आपके तत्वों को गतिशील रूप से क्या जोड़ रहा है? क्या आप सिर्फ उसी कोड पर नियम ("जोड़ें") नहीं डाल सकते हैं?

+0

मैं इस समय वास्तव में इस विधि का उपयोग कर रहा हूं, लेकिन उम्मीद कर रहा था कि एक बेहतर तरीका होगा (जैसा कि आपने पहले सुझाए गए लाइव इवेंट्स के समान कुछ उपयोग कर रहे हैं)। – ChadT

+0

मुझे लगता है कि आपकी वर्तमान विधि अधिक "सही" है। आपने जो अभी तक वर्णित किया है, उससे ऐसा लगता है कि आपको क्लाइंट-साइड काफी कुछ हो रहा है। क्या आपने प्रदर्शन छोड़ने पर ध्यान देना शुरू कर दिया है? आखिर में मैंने लाइव घटनाओं को मारने का प्रदर्शन किया। –

0

आप jQuery 1.3 के नए Live Events

+1

मुझे लाइव घटनाओं के बारे में पता है, लेकिन यह नहीं देखते कि वे jquery मान्य – ChadT

+0

के साथ उपयोग के लिए अनुकूलित कैसे किए जा सकते हैं v1.3.1 लाइव() केवल निम्न "संभावित ईवेंट मानों का समर्थन करता है: क्लिक करें, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup " – bendewey

+0

क्षमा करें, मैं वैलिडेटर के आंतरिक से पूरी तरह परिचित नहीं हूं, लेकिन क्या यह किसी प्रकार की कस्टम घटना को नहीं बढ़ाया जाना चाहिए? यदि ऐसा है, तो उस मामले में लाइव इवेंट्स का उपयोग किया जा सकता है। –

2

अरे यह सुनिश्चित नहीं है कि यह एक अपूर्ण हैक है लेकिन यह मेरे लिए काम करता है। इससे पहले, मैं चयनकर्ता पर प्रत्येक() कर रहा था और उसी मुद्दे पर चल रहा था जिसमें आपके द्वारा नव निर्मित, अजाक्स तत्वों के साथ हैं।

// >>> MSG/Comment form validator, now and forever... 
    $('form.streamForms').live('mouseover', function(){ 
     $(this).validate({ 
      rules: { 
       text: "required" 

      }, 
      messages: { 
       text: " " 
      } 
     });  
    }); 

आशा है कि यह मदद करता है:

माउस ले जाएँ लाइव पर घटना चाल किया है, दी उर अपने सीएसएस के साथ पागल नहीं किया जा रहा लगता है!

+1

या, आप 'माउसओवर' के बजाय 'क्लिक'' सुन सकते हैं: [AJAX लोड किए गए फॉर्म को मान्य करना] (http://forum.jquery.com/topic/validate-validating-an-ajax-loaded-form) –

+0

यदि कोई फ़ील्ड के माध्यम से टैब करता है तो यह आग नहीं लगेगा, लाइव() फ़ोकस ईवेंट का समर्थन नहीं करता है। – ChadT

0

यहां बताया गया है कि मैंने इसे कैसे संभाला। सबसे पहले मैंने अपनी सत्यापन वस्तु बनाई।

 

    var myvalidations = {}; 
    myvalidation.registerform = function() { $("#registerform").validate({ 
      submitHandler: function(form) { 
       $(form).ajaxSubmit(optionspersonal); 
       //submitReg(); 
      }, 
        rules: { 
       firstname: { 
        required: true, 
        minlength: 5, 
        maxlenght: 22 
       }, 
        messages: { 
          firstname: { 
           required: "Tell us what to call you by.", 
        minlength: "Your username must consist of at least 5 characters" 
          } 
        } 
      }); 
     } 

अब, जब भी आप अपने प्रपत्र यकीन है कि यह उस पर एक आईडी है या कुछ हद तक इसे संदर्भ और बस अपने फ़ंक्शन को कॉल आप इसे बनाने के सही होने के बाद करने के लिए कर पैदा करते हैं।

 

    //create my content 
    $('.content').html('--fields etc--'); 
    //add validation 
    myvalidation.registerform(); 

कोई और सुझाव स्वागत है; लेकिन मुझे लगता है कि मूल रूप से यह सही दृष्टिकोण है।

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

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