2010-03-07 17 views
42

के अलावा इनपुट फ़ील्ड का चयन करें मेरे पास एक तालिका में एक पंक्ति है जिसमें एक चेकबॉक्स और कुछ अन्य फॉर्म फ़ील्ड्स (टेक्स्ट बॉक्स, छुपे हुए फ़ील्ड, सिलेक्ट सूचियां) शामिल हैं। जब चेकबॉक्स चेक किया जाता है तो मैं छिपे हुए फ़ील्ड को छोड़कर उस पंक्ति में सभी फॉर्म फ़ील्ड को अक्षम करना चाहता हूं। मेरे पास यह अधिकांश भाग के लिए काम कर रहा है, लेकिन मैं छिपे हुए क्षेत्रों को अनदेखा नहीं कर सकता।JQuery छुपाएं

तालिका पंक्ति में सभी फॉर्म फ़ील्ड का चयन करने का सबसे अच्छा तरीका क्या है लेकिन चयन में छिपे हुए फ़ील्ड को अनदेखा करें?

उत्तर

1

.........

$('tr input').attr('disabled', true) 
$('tr input[type="hidden"]').removeAttr('disabled') 
38

द्वारा मान लिया जाये कि "छिपा" क्या आपका मतलब type="hidden" अर्थात्:

<input type="hidden" name="foo" value="bar"> 

तो आप attribute not equals selector उपयोग कर सकते हैं यह करने के लिए:

$("tr input:checkbox").click(function() { 
    var cb = $(this); 
    var tr = $(this).closest("tr"); 
    if (cb.val()) { 
    tr.find("input[type!='hidden']").attr("disabled", true); 
    } else { 
    tr.find("input[type!='hidden']").removeAttr("disabled"); 
    } 
}); 

मेरी सामान्य सलाह विशेषता चयनकर्ताओं से बचना है। वे धीमे हैं। प्रासंगिक इनपुट (या तो छिपे हुए या छिपे हुए नहीं) को एक वर्ग दें और फिर चयनकर्ताओं में इसका उपयोग करें।

यदि फिर भी तुम्हारा मतलब "छिपा" "दिखाई नहीं" के रूप में तो :visible चयनकर्ता का उपयोग:

$("tr input:checkbox").click(function() { 
    var cb = $(this); 
    var tr = $(this).closest("tr"); 
    if (cb.val()) { 
    tr.find("input:visible").attr("disabled", true); 
    } else { 
    tr.find("input:visible").removeAttr("disabled"); 
    } 
}); 
+0

@Cletus आपको लगता है कि एक फिल्टर() एक समारोह है कि जाँच की है कि क्या "this.type" "छिपा" है में चयनकर्ता विशेषता की तुलना में तेजी के साथ हो सकता है फोन परीक्षा? – Pointy

+0

अहह, कभी भी उन्हें कक्षा के साथ टैग करने का विचार नहीं किया। अच्छा! – Bob

+0

@cletus - कक्षाओं का उपयोग करने पर उत्कृष्ट युक्ति। बस मेरे जीवन को सार्थक बना दिया। –

0

पहले, आप अपने "चयनकर्ता" चेकबॉक्स टैग करने के लिए (एक वर्ग विशेषता के साथ उदाहरण के लिए "चयनकर्ता) की जरूरत है । इतना है कि यह स्पष्ट है कि यह नियमित रूप तत्व के बजाय की जाँच के लिए प्रयोग किया जाता है तो फिर आप इस का उपयोग करें:

$('table :checkbox.selector').click(function(ev) { 
    $(ev.currentTarget) 
      .parents('td').siblings('td') 
      .find(':input:not([type=hidden])') 
      .attr('disabled', ev.currentTarget.checked); 
}); 

यह समाधान सभी आदानों के लिए काम करता है (। उदाहरण के लिए चयन सूची, textareas) और इसे निष्क्रिय नहीं होती चयनकर्ता चेकबॉक्स स्वयं।

मुझे लगता है कि आप नवीनतम jQuery का उपयोग कर रहे हैं।

34
$(":input:not([type=hidden])") 

": इनपुट" एक jQuery छद्म चयनकर्ता है ... "सभी इनपुट, पाठ क्षेत्र का चयन करें और बटन तत्वों को चुनता है।" http://api.jquery.com/input-selector/

19

इस छिपा चयनकर्ता का उपयोग करके हल कर सकते हैं

$("input:not(:hidden)")

यह भी देखें: jQuery hidden selector

0

मैं jQuery में ऐसा करने का एक आसान तरीका मिल गया।

$("tr input").not("input[type='hidden']") 

नीचे कोड स्निपेट में, वहाँ tabsDiv की एक आईडी जिसमें एक से अधिक एचटीएमएल तत्व शामिल हैं के साथ एक div है और इस कोड hidden के प्रकार के साथ उन लोगों को छोड़कर इस div के अंदर सभी इनपुट तत्वों हो जाता है।

$("#tabsDiv").find("input").not("input[type='hidden']") 
0

बस दृश्य का एक फ़िल्टर जोड़ें जिसका अर्थ है कि यह केवल इनपुट तत्व लेगा जो उपयोगकर्ताओं को दिखाई देगा।
यह मेरे लिए काम करता है मैं 30 char के लिए विवरण जोड़ रहा हूं।

$ ("इनपुट: दिखाई")

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