दिलचस्प पोस्ट
नंबरों की एक धारा से सबसे बड़ा 5000 नंबर स्टोर करें एएसपी.नेट एमवीसी बनाम वेब फॉर्म का उपयोग करने के लिए सबसे बड़ा लाभ जावास्क्रिप्ट का उपयोग करते हुए एचटीएमएल में टेक्स्टएरिया पर अधिकतम लंबाई लगाने के लिए कॉरस: प्रवेश-नियंत्रण-अनुमति-मूल में वाइल्डकार्ड का उपयोग नहीं किया जा सकता है, जब क्रेडेंशियल्स ध्वज सच है सोलर बनाम इलास्टिक खोज संपादन टेक्स्ट पर एंड्रॉइड में ईमेल एड्रेस वैधीकरण डुप्लिकेट, कॉन्स्ट और गैर-कॉन्स्ट, गेटर्स के लिए सुरुचिपूर्ण समाधान? कैसे ब्राउज़र खिड़की बंद घटना पर कब्जा करने के लिए? यूआरएल पर क्लिक करना डिफ़ॉल्ट ब्राउज़र खोलता है पुश अधिसूचना ग़लत ढंग से काम करता है जब एप पृष्ठभूमि पर है या नहीं चल रहा है गिट का उपयोग करते हुए एक दूरस्थ रिपॉजिटरी में एक टैग पुश करें? सक्रिय निर्देशिका से मैं उपयोगकर्ताओं की सूची कैसे प्राप्त करूं? यह कैसे बताने के लिए कि एक बिंदु एक पंक्ति के दाईं ओर या बाईं तरफ है सी # परीक्षा अगर उपयोगकर्ता ने किसी फ़ोल्डर में प्रवेश लिखना है विंडो बंद या पृष्ठ ताज़ा पर जावास्क्रिप्ट कोड चलाएं?

JSF / प्राइमफेस AJAX अपडेट्स टूटता है jQuery इवेंट श्रोता फ़ंक्शन बाइंडिंग

मैं नीचे दिए गए jQuery का उपयोग करते हुए HTML में हर input लिए एक change ईवेंट श्रोता को पंजीकृत कर रहा हूं:

 <h:head> <script type="text/javascript"> //<![CDATA[ $(document).ready(function(){ $(':input').each(function() { $(this).change(function() { console.log('From docReady: ' + this.id); }); }); }); function changeHandler() { console.log("from changeHandler"); } //]]> </script> </h:head> <h:body> <h:form id="topForm"> <p:commandButton id="myButton" value="update" action="#{testBean.submit}" partialSubmit="true" process=":myForm:panel" update=":myForm:panel" /> </h:form> <h:form id="myForm"> <p:panel id="panel"> <p:inputTextarea id="myTextarea" value="#{testBean.val}" onchange="changeHandler();"/> </p:panel> </h:form> </h:body> 

यदि उपयोगकर्ता myTextarea के कंटेंट को बदलता है तो दोनों change घटनाएं शुरू हो रही हैं हालांकि अद्यतन बटन दबाने के बाद, जो आंशिक रूप से myTextarea अपडेट करता है, केवल परिवर्तनहैंडलर बाद में ट्रिगर हो रहा है। $(document).ready() में बाध्य होने वाला कार्यक्रम $(document).ready() अब ट्रिगर नहीं कर रहा है।

क्या यह प्राइमफेस संबंधित और / या अपेक्षित व्यवहार है? यदि हां, तो मैं फिर से दस्तावेज तैयार स्क्रिप्ट को फिर से बिना दुबारा दूसरे ईवेंट को ट्रिगर करने के लिए कैसे सुनिश्चित कर सकता हूं।

वेब के समाधान से एकत्रित समाधान "JSF / प्राइमफेस AJAX अपडेट्स टूटता है jQuery इवेंट श्रोता फ़ंक्शन बाइंडिंग"

आपकी समस्या के कारण, AJAX अनुरोध HTML DOM पेड़ को एजेक्स प्रतिक्रिया से नए HTML तत्वों के साथ अपडेट करेगा। उन नए HTML तत्व – जाहिर है- jQuery ईवेंट हैंडलर फ़ंक्शन संलग्न नहीं है। हालांकि, $(document).ready() AJAX अनुरोधों पर पुन: निष्पादित नहीं किया गया है। आपको मैन्युअल रूप से इसे फिर से लागू करना होगा।

यह विभिन्न तरीकों से प्राप्त किया जा सकता है। सबसे आसान तरीका $(document).on(event, selector, function) बजाय $(document).on(event, selector, function) उपयोग करना है $(selector).on(event, function) । यह दस्तावेज से जुड़ा है और दिया गया functionRef आरएफ हमेशा लागू होता है जब दिए गए ईवेंट का नाम दिए गए selector मेल खाने वाले तत्व पर ट्रिगर होता है। तो आपको JSF द्वारा फ़ंक्शन को स्पष्ट रूप से पुन: निष्पादित करने की आवश्यकता नहीं है।

 $(document).on("change", ":input", function() { console.log("From change event on any input: " + this.id); }); 

वैकल्पिक तरीके से एजेक्स अनुरोध के पूर्ण होने पर फ़ंक्शन को स्पष्ट रूप से पुन: निष्पादित करना है। यह केवल एकमात्र तरीका होगा जब आप वास्तव में ready / load ईवेंट के दौरान फ़ंक्शन को निष्पादित करने में रुचि रखते हैं (जैसे कि कुछ प्लगिन विशिष्ट व्यवहार / देखो 'एन'फ़ेल, जैसे तिथि पिकर को सीधे लागू करने के लिए)। सबसे पहले, आपको $(document).ready() को रीफैक्टर करने की आवश्यकता है। फिर से काम करने योग्य फ़ंक्शन के रूप में $(document).ready() नौकरी:

 $(document).ready(function(){ applyChangeHandler(); }); function applyChangeHandler() { $(":input").on("change", function() { console.log("From applyChangeHandler: " + this.id); }); } 

(ध्यान दें कि मैंने आपके पूरी तरह से अनावश्यक $.each() दृष्टिकोण को हटा दिया और सरलीकृत किया)

फिर, एजेक्स अनुरोध के पूरा होने पर इसे पुन: निष्पादित करने के लिए निम्नलिखित तरीकों में से एक चुनें:

  1. प्राइमफैस कमांड बटन की oncomplete विशेषता का प्रयोग करें:

     oncomplete="applyChangeHandler()" 
  2. $(document).ready() बजाय <h:outputScript target="body"> उपयोग करें $(document).ready() ,

     <h:outputScript id="applyChangeHandler" target="body"> applyChangeHandler(); </h:outputScript> 

    और इसे update विशेषता में संदर्भित update :

     update=":applyChangeHandler" 
  3. उपयोग <p:outputPanel autoUpdate="true"> स्वतः प्रत्येक अजाक्स अनुरोध पर इसे अपडेट करने के लिए:

     <p:outputPanel autoUpdate="true"> <h:outputScript id="applyChangeHandler"> applyChangeHandler(); </h:outputScript> </p:outputPanel> 
  4. OmniFaces <o:onloadScript> उपयोग करें $(document).ready() बजाय $(document).ready() , <h:outputScript> और उन सभी पर

     <o:onloadScript>applyChangeHandler();</o:onloadScript>