2011-10-19 19 views
5

पर क्लिक करें, मैं वर्तमान में किसी विशिष्ट फ़ॉर्म तत्व पर फ़ोकसआउट का उपयोग कर रहा हूं ताकि यह पता चल सके कि उपयोगकर्ता ने किनारे पर टैब किया है या किसी भिन्न फ़ील्ड पर क्लिक किया है।पता लगाएं कि फोकसआउट किसी कुंजीपटल के कारण है या

मैं इस वजह से एक ajax कॉल लांच इस के बाद तुरंत पता करने की जरूरत है और कई अलग अलग फ़ील्ड का निर्माण (जैसे एक मान्य ज़िप कोड दर्ज करें, यह एक डाटाबेस खोज करता है और शहर के साथ वापस आता है)।

अब, मेरा प्रश्न, AJAX कॉल एक HTML प्रतिक्रिया प्राप्त करता है और इसे लोड करने पर, फ़ॉर्म को वर्तमान फोकस खोने का कारण बनता है।

मुझे उस फोकस को सहेजने और AJAX कॉल के बाद इसे बहाल करने का एक तरीका चाहिए।

अब तक, मुझे नेविगेशन के प्रकार के लिए नेविगेशन प्राप्त हुआ है। यह बहुत तोड़ता है, और पृष्ठ पर अन्य चीजों को लोड करने में भी हस्तक्षेप करता है (जैसे संवाद विंडो)। इसलिए, मुझे लगता है कि ऐसा करने का एक बेहतर तरीका होना चाहिए, यही कारण है कि मैं यहां हूं। कृपया मुझे बताएं कि क्या आपको और अधिक जानकारी चाहिये? कोड नीचे है।

सभी बेहतरीन!

$('.DZipCode').focusout(function() { 
     var ZipCode = $('.DZipCode').val(); 


    $.ajax({ // create an AJAX call... 
     async: false, 
     type: "POST", // GET or POST 
     url: "/Home/SelectZipCodeDataDestination", // the file to call` 
     data: { zipCode: ZipCode }, 
     success: function (response) { // on success.. 
      $(":input").focus(function() { 
       var prevFocus; 

       prevFocus = $(this).attr("id"); 
       $('#quotetab').html(response); 
       $('#'+prevFocus).focus(); 
      // });    
     } // end of success 
    }); // end of .ajax 

});

उत्तर

6

सबसे आसान तरीका है मैं के बारे में सोच सकता है जब एक कुंजी दबाने एक ध्वज स्थापित करने के लिए है, तो बस झंडा जाँच जब भी आप पता करने की जरूरत है।

var tabPressed = false; 

$('input[type="text"], textarea') 
    .keydown(function(e) { 
     var keyCode = e.keyCode || e.which; 

     tabPressed = (keyCode==9) ? true : false; 
    }) 
    .focus(function() { 
     tabPressed = false; 
    }); 

तो फिर आप अपने ajax सफलता कॉलबैक (या जहाँ भी) में

if(tabPressed) { 
//some stuff 
} 

कर सकते हैं।

+0

इसे जाने के लिए थोड़ा अतिरिक्त लगा लेकिन दिशा निश्चित रूप से अच्छी थी। किसी कारण से, AJAX कॉल से प्रतिक्रिया मेरे tabPressed चर को गलत पर रीसेट कर रहा था। मैं फोकस आउट फ़ंक्शन के अंदर एक द्वितीयक चर के भीतर बस इसके मान को संग्रहीत कर चुका हूं। सहायता के लिए धन्यवाद! –

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