2010-07-27 12 views
10

मैं एक सर्वेक्षण फॉर्म तैयार कर रहा हूं जिसमें प्रत्येक प्रश्न और उत्तर के सेट को हाइलाइट किया गया है (पृष्ठभूमि रंग बदलकर) जब उपयोगकर्ता उन पर ध्यान केंद्रित करता है। । फोकस() और .blur() दोनों फ़ायरफ़ॉक्स और आईई में काम करते हैं, लेकिन सफारी और क्रोम में पूरी तरह से नहीं है। मैंने भी एक ही परिणाम के साथ। फोकसिन() और। फोकसआउट() की कोशिश की। संपादित करें: क्लिकिंग फोकस ईवेंट को आग नहीं देती है, लेकिन इनपुट फ़ील्ड के माध्यम से टैबबिंग करता है। मैं कहता हूं पूरी तरह से नहीं है क्योंकि यह टेक्स्ट इनपुट के लिए काम करता है, इनपुट और टेक्स्टरी इनपुट का चयन करता है; लेकिन रेडियो और चेकबॉक्स इनपुट नहीं।jQuery। फोकस() और .blur() क्रोम या सफारी में काम नहीं कर रहे हैं

$(document).ready(function() 
{ 
    $("form li").focusin(function() 
    { 
    $(this).addClass("over"); 
    }).focusout(function() 
    { 
    $(this).removeClass("over"); 
    }); 
}); 

यह इस के समान एचटीएमएल के ब्लॉक के लिए आवेदन किया जा रहा है:

<li> 
    <label for="webmail" class="desc">Email</label> 
    <input type="text" name="webmail" id="webmail" /> 
</li> 
<li> 
    <label for="business" class="desc">Purpose of your Charter Flight:</label> 
    <div> 
     <span> 
      <input type="radio" name="purpose" id="business" class="radio" /> 
      <label class="choice" for="business">Business</label> 
     </span> 
     <span> 
      <input type="radio" name="purpose" id="pleasure" class="radio" /> 
      <label class="choice" for="pleasure">Pleasure</label> 
     </span> 
    </div> 
</li> 

मैं चारों ओर टॉगल के साथ खिलवाड़ की कोशिश की, लेकिन मैं एक और अधिक सुरुचिपूर्ण समाधान है कि जटिल तर्क का प्रयोग को शामिल नहीं करता रहा हूँ इसे काम करने के लिए। कोई विचार?

+0

यदि 'blur()' काम नहीं कर रहा है, तो एक डमी इनपुट तत्व बनाने का प्रयास करें, इसे पृष्ठ से कहीं चिपकाएं, और उस पर 'फोकस()' कॉल करें। – Warty

उत्तर

1

मैंने कल रात ड्राइव ड्राइव पर इसके बारे में सोचा और इसे अपने आप से बाहर निकाला, यह सबसे सुरुचिपूर्ण समाधान नहीं हो सकता है, लेकिन यह निश्चित रूप से काम करता है।

$(document).ready(function() 
    { 
     $("textarea, input, select, .radio, .checkbox").click(function() 
     { 
      $("form li.over").toggleClass("over"); 
      $(this).parents("li").toggleClass("over"); 
     }); 
    }); 

वैसे भी धन्यवाद!

+1

आपको इनपुट मूल्यों के लेबल पर प्रासंगिक क्लिक ईवेंट भी शामिल करना चाहिए, और जब उपयोगकर्ता आपके फॉर्म पर नेविगेट करने के लिए टैब का उपयोग करते हैं तो क्या होता है? – jakeisonline

+0

क्या आप प्रासंगिक क्लिक ईवेंट से क्या मतलब समझेंगे? क्या आप लेबल पर ऑनक्लिक विशेषता जोड़ना चाहते हैं? इसके अलावा, क्यों? मैं पूरी जावास्क्रिप्ट चीज़ के चारों ओर बिल्कुल नया हूं, इसलिए कोई मदद उपयोगी है! मुझे यह पसंद आएगा अगर .blur() और .focus() ने वेबकिट में माउस पर सही तरीके से काम किया है, लेकिन ग्राहक उस पर क्लिक करते समय काम करना चाहता था। क्या आप उन घटना हैंडलरों के साथ दूसरी बार कोड दोहराए बिना। फोकस() और .blur() कार्यक्षमता जोड़ने के लिए एक शानदार तरीका जानते हैं? – Eric

+0

जैसा कि @ जेकिसलाइन ने इंगित किया है, जब उपयोगकर्ता टैब का उपयोग करता है या लेबल पर क्लिक करता है, तो फ़ॉर्म के माध्यम से नेविगेट करने के दो मानक तरीके। मैं पाठ इनपुट के लिए फ़ोकस ईवेंट छोड़ने और रेडियो और चेकबॉक्स में एक परिवर्तन ईवेंट जोड़ने का सुझाव देता हूं क्योंकि मैं दूसरे उत्तर में एक टिप्पणी के रूप में सुझाव देता हूं। –

3

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

बजाय jQuery.change() का उपयोग करके देखें, यहाँ मैं

$("input#zendesk-dropbox-askedbefore, input#zendesk-dropbox-newhere").change(function() { 
    $("label#zendesk-dropbox-label-askedbefore, label#zendesk-dropbox-label-newhere").toggleClass('zendesk-dropbox-label-highlight'); 
}); 

था मामले में यह आईडी नामों में से मेरी पागल प्रयोग से स्पष्ट नहीं है कि इस समस्या से एक काम उदाहरण है, input#zendesk-dropbox-askedbefore & input#zendesk-dropbox-newhere दोनों रेडियो बटन हैं।

+0

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

+0

मुझे एक ही समस्या का सामना करना पड़ा, टेक्स्ट इनपुट और रेडियो इनपुट में "फोकस" कार्यक्रम था, लेकिन रेडियो ने इस घटना को वेबकिट में नहीं निकाल दिया, इसलिए इन्हें "परिवर्तन" घटना पर रखा गया। अब मेरे पास दो घटनाएं हैं, टेक्स्ट इनपुट के लिए "फोकस" और रेडियो के लिए "चेंज", दोनों एक ही कॉलबैक को कॉल करते हैं। –

0
// In js area write following method 
$('#chkRikin').focus(function() { 
alert('Say Hi Rikin'); 
}); 


// in html area write following code anenter code hered test it your self 
<input type="checkbox" onclick="this.focus()" onblur="yourMethod()" /> 

it works in google crom 
संबंधित मुद्दे