2013-04-18 8 views
26

मेरे पास 2 रूपों वाला एक पृष्ठ है; प्रत्येक रूप में इनपुट टेक्स्ट फ़ील्ड होता है;jQuery: क्या मुझे दोनों कुंजीअप की आवश्यकता है और घटनाओं को बदलना है?

पहले फॉर्म के इनपुट टेक्स्ट में पाया गया मान दूसरे फॉर्म के इनपुट टेक्स्ट में मिले मान के समान होना चाहिए;

जब मूल्य chages, अन्य इनपुट टेक्स्ट फ़ील्ड भी इसके मान को संशोधित करता है;

क्या मुझे onkeyup और onchange ईवेंट दोनों का उपयोग करना चाहिए?

यदि नहीं, तो कौन सा उपयोग करने वाला सही है?

मैं यह पूछ रहा हूं क्योंकि यह बताता है कि मेरे पास 2 पोस्ट अनुरोध हैं, और मुझे लगता है कि यही कारण है कि यही कारण है।

$('input.searchbox').keyup(function(){ 
     $('input.txtfieldsearch').val($('input.searchbox').val()); 
     listViewUpdate(); 
     $('input.txtfieldsearch').trigger("keyup"); 
    }); 

    $('input.txtfieldsearch').keyup(function(){ 
     $('input.searchbox').val($('input.txtfieldsearch').val()); 
     listViewUpdate(); 
    }); 

    $('input.searchbox').change(function(){ 
     $('input.txtfieldsearch').val($('input.searchbox').val()); 
     listViewUpdate(); 
     $('input.txtfieldsearch').trigger("change"); 
    }); 

    $('input.txtfieldsearch').change(function(){ 
     $('input.searchbox').val($('input.txtfieldsearch').val()); 
     listViewUpdate(); 
    }); 
+0

लेकिन किसके पास उपयोग करने का अधिकार है? –

+0

जब आप मूल्यों को अपडेट करना चाहते हैं? 'परिवर्तन' और' कीप 'अलग-अलग घटनाएं हैं, और आप दोनों का उपयोग कर सकते हैं। – Bergi

+0

क्या आपने देखा कि आप 'searchbox' से 'listViewUpdate' को दो बार कॉल कर रहे हैं? – Bergi

उत्तर

37

आप $.on() फ़ंक्शन का उपयोग कर सकते हैं और गुणक हैंडलर संलग्न कर सकते हैं।

$("#element").on('keyup change', function(){ 
    // Your stuff... 
}); 
2

यदि आप परिवर्तन पर प्रतिक्रिया करना चाहते हैं, तो आपको change का उपयोग करना चाहिए।

ऐसे कुछ अवसर हैं जहां एक कीप एक बदलाव नहीं करता है (जैसे शिफ्ट) और अवसर जहां एक कीप (पेस्ट) के बिना कोई परिवर्तन होता है।

+0

क्या इसका मतलब यह है कि अगर मैं 'कीप' और 'चेंज' का उपयोग करता हूं तो मैं इसे सही तरीके से कर रहा हूं? –

+1

कुंजीपटल शायद ही कभी बदलाव करता है। यदि आप इनपुट फ़ील्ड को धुंधला करते हैं तो 'चेंज' केवल तभी आग लग जाएगी। – Bergi

+1

वे अलग-अलग चीजें करते हैं। आपको उन्हें अलग से कोशिश करनी चाहिए और देखें कि वे कब आग लगते हैं और देखते हैं कि आपको कौन सी जरूरत है। कुछ मामलों में, दोनों सही हो सकते हैं। – ColBeseder

11

onkeyup ज्यादातर पर सक्रिय होता है एक प्रमुख उपयोगकर्ता द्वारा दबाया गया था और तब जारी किया। onchange हो सकता है यदि उपयोगकर्ता ब्राउज़र की स्वतः पूर्ण सुविधा का उपयोग करता है। तुम सिर्फ मामले में, दोनों घटनाओं को पकड़ने के लिए .on() विधि का उपयोग करना चाहिए:

$('input.searchbox').on('keyup change', function(e){ 
    $('input.txtfieldsearch').val($('input.searchbox').val()); 
    listViewUpdate(); 
    $('input.txtfieldsearch').trigger(e.type); 
}); 

$('input.txtfieldsearch').on('keyup change', function(){ 
    $('input.searchbox').val($('input.txtfieldsearch').val()); 
    listViewUpdate(); 
}); 
7

आप केवल "इनपुट" घटना का उपयोग कर सकते है अगर आप पुराने ब्राउज़र के लिए समर्थन प्रदान करने के जरूरत नहीं है। इनपुट तत्व में मूल्य परिवर्तन में हर बार इसे निकाल दिया जाएगा। यहां समर्थित ब्राउज़र की एक सूची दी गई है: https://developer.mozilla.org/en-US/docs/Web/Events/input

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