2013-06-26 6 views
5

मैं फार्म की डबल क्लिक पर सभी प्रपत्र तत्वों सक्षम करने के लिए कोशिश कर रहा हूँ सक्षम करने के लिए, और इस प्रकार कोड को सरल बनाया गया है:डबल क्लिक करें अक्षम सलेक्ट बॉक्स

<form> 
    <input type="text" name="foo" disabled /> 
    <select name="bar" disabled> 
     <option>a</option> 
     <option>b</option> 
    </select> 
</form> 

<script type="text/javascript"> 
    $(function() { 
     $('form').dblclick(function() { 
      $(this).find('input,select').removeAttr('disabled'); 
     }); 
    }); 
</script> 

हालांकि, प्रपत्र डबल क्लिक करें ईवेंट को सक्रिय नहीं है अक्षम <select> तत्व पर होवर करते समय। और दुर्भाग्यवश, "readonly" attribute<select> तत्वों पर काम नहीं करता है।

यह एक आंतरिक अनुप्रयोग के लिए है, और मुझे केवल इसे Google क्रोम पर कार्य करने की आवश्यकता है।

अद्यतन:

मैं इस पर जवाब का एक समूह हो रही है, और मुझे लगता है कि मैं अपने प्रश्न मदद करने के लिए प्रक्रिया ... क्या विकलांग प्रपत्र तत्वों पर W3C कल्पना करता है मार्गदर्शन में संशोधन करने की जरूरत है कहते हैं? ... ऐसा लगता है कि उदाहरण के लिए फ़ायरफ़ॉक्स में अक्षम <input> तत्वों पर डबल क्लिक ईवेंट आग नहीं लगाता है। शायद यह तथ्य कि क्रोम में आग लगती है वह एक बग/मिसाइलमेंट डब्ल्यू/स्पेक है जिसे मैं हमेशा वहां पर भरोसा नहीं कर सकता।

फिलहाल, फॉर्म के ऊपर एक बिल्कुल स्थित रैपर तत्व पर डबल क्लिक ईवेंट देखने के लिए सबसे अच्छा विकल्प लगता है ... भले ही मैं अतिरिक्त रैपर तत्वों को जोड़ने से नफरत करता हूं।

उत्तर

3

आपको लगता है कि इस्तेमाल कर सकते हैं:

DEMO

$(function() {  
    $('form').dblclick(function() { 
     $(this).find('input,select').removeProp('disabled').removeClass('no-pointer'); 
    }).find(':input').addClass('no-pointer'); 
}); 

सीएसएस:

.no-pointer{pointer-events:none} 
+0

दिलचस्प। यह प्रश्न का उत्तर सबसे अच्छा बताया गया है ... हालांकि, घटनाओं के लिए W3C spec क्या अक्षम तत्व तत्व हैं? शायद, क्रोम में '' तत्वों पर डबल क्लिक इवेंट फायरिंग एक बग है? –

+0

@DavidBudiac यह सच है, शायद यह एक बग है, इस मामले में '0 इनपुट' नहीं 'चयन करें' श्रेणी –

4

मैं सुझाव देता हूं कि div पूरे फॉर्म को ओवरले कर दें, और उस पर क्लिक हैंडलर रखें। विकलांग फ़ील्ड फायर हैंडलर पर क्लिक नहीं करते हैं।

+2

लेकिन क्लिक हैंडलर 'फॉर्म' के लिए है, जो कभी भी अक्षम नहीं होता है, केवल फॉर्म के भीतर फ़ील्ड। अक्षम पाठ इनपुट पर डबल क्लिक ठीक काम करता है।, – tymeJV

+0

@tymeJV> फिर भी जेम्स का प्रस्ताव अच्छा लगता है। –

+1

@ बार्टड्यूड - मैं सहमत हूं, मैं बस सोच रहा हूं कि अक्षम टेक्स्ट इनपुट पर डबल क्लिक क्यों काम करता है, न कि 'select'। – tymeJV

0

आज़माएं:

HTML:

<div id="wrapper"> 
    <form> 
     <input type="text" name="foo" disabled/> 
     <select name="bar" disabled> 
      <option>a</option> 
      <option>b</option> 
     </select> 
    </form> 
</div> 

jQuery:

$('#wrapper').dblclick(function() { 
    $('form').find('input, select').prop('disabled', false); 
}); 

लाइव डेमो:

http://jsfiddle.net/oscarj24/TvBR6/3/

(बस लाल div डबल क्लिक करें और एक बार देख ले)।

+1

जोड़ने के लिए चयनकर्ता के रूप में चयन करें यदि आप चयन को डबल क्लिक करते हैं तो भी विफल रहता है। – j08691

+0

मैं समझ सकता हूं कि क्यों आवश्यकता की आवश्यकता है, मुझे लगता है कि 'wrapper' div को असाइन किया गया 'डबल-क्लिक' ईवेंट पर्याप्त है। –

+2

क्या यह अच्छा यूएक्स है? सुलभता के बारे में क्या? बटन या चेकबॉक्स का उपयोग क्यों न करें? आप वैसे भी एक बटन जोड़ सकते हैं, जो डबल-क्लिक नहीं कर सकते हैं। –

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