2011-06-20 11 views
8

मेरे पास चेकबॉक्स के बारे में कोई प्रश्न है। ,HTML फॉर्म में चेकबॉक्स के लिए ऐरे

<form method="post"> 
I speak the following languages: 
<input type="checkbox" name="lang_en" value="en">English<br /> 
<input type="checkbox" name="lang_fr" value="fr">Français<br /> 
<input type="checkbox" name="lang_es" value="es">Español<br /> 
</form> 

प्रश्न 1 मैं दोनों काम करता है विश्वास करते हैं:

<form method="post"> 
I speak the following languages: 
<input type="checkbox" name="lang[]" value="en">English<br /> 
<input type="checkbox" name="lang[]" value="fr">Français<br /> 
<input type="checkbox" name="lang[]" value="es">Español<br /> 
</form> 

यह आवश्यक चेक बॉक्स Lang [] (एक सरणी का उपयोग करके) या मैं प्रत्येक बॉक्स का एक अलग नाम है, जैसे दे सकते हैं नाम के लिए है यदि ऐसा है तो आप कब तय करते हैं कि किस का उपयोग करना है?

प्रश्न 2 मैं तो मैं पता लगाने के लिए जो चेकबॉक्स का एक कोड if(isset($_POST['lang_en'])) के लिए इसी तरह का उपयोग करके चयन है पीएचपी उपयोग कर सकते हैं ऊपर सूचीबद्ध दूसरी विधि का उपयोग कर रहा हूँ। अगर मैं पहली विधि का उपयोग करना चाहता था, तो क्या यह जांचने का एक त्वरित तरीका है कि कोई विशेष चेकबॉक्स चुना गया है या नहीं? फिलहाल अनचाहे समाधान के बारे में सोचने के लिए if(in_array('lang_en', $_POST['lang'])) करना शामिल है यह जांचने के लिए कि यह $ _POST में मौजूद है या नहीं।

प्रश्न 3 मुख्य प्रश्न यह है: मैं दूसरी विधि का उपयोग कर रहा हूं ताकि मैं आसानी से जांच कर सकूं कि PHP में चेकबॉक्स चयनित है या नहीं। अब मैं एक टेक्स्ट लिंक जोड़ना चाहता हूं जो क्लिक किए जाने पर सभी चेकबॉक्स का चयन करेगा। मेरा जावास्क्रिप्ट बहुत अच्छा नहीं है, इसलिए मैं http://www.shiningstar.net/articles/articles/javascript/checkboxes.asp से एक स्क्रिप्ट का उपयोग कर रहा हूं लेकिन उदाहरण स्क्रिप्ट चेकबॉक्स के नामों के लिए एक सरणी का उपयोग करती है, जबकि मेरा PHP कोड जांच नहीं सकता है कि चेकबॉक्स को सरणी के साथ चुने गए हैं या नहीं, चेकबॉक्स के नामों के लिए उपयोग किया जाता है। जावास्क्रिप्ट कोड को सरणी के बिना काम करने के लिए कैसे संशोधित किया जा सकता है?

आशा है कि मुझे यह कष्टप्रद प्रश्न मिल जाएगा! धन्यवाद!

संपादित

जावास्क्रिप्ट:

<!-- Begin 
function checkAll(field) 
{ 
for (i = 0; i < field.length; i++) 
    field[i].checked = true ; 
} 

function uncheckAll(field) 
{ 
for (i = 0; i < field.length; i++) 
field[i].checked = false ; 
} 
// End --> 
</script> 

HTML:

<form action="http://localhost/website/places/search" method="post" accept-charset="utf-8" name="subcategory"> 

<ul> 
    <li><input type="checkbox" name="cuisine_American" value="American" /> American</li> 
    <li><input type="checkbox" name="cuisine_Chinese" value="Chinese" onClick="checkAll(document.subcategory.cuisine)" /> Chinese</li> 
    <li><input type="checkbox" name="cuisine_Indian" value="Indian" onClick="checkAll(document.subcategory.cuisine)" /> Indian</li> 
    <li><input type="checkbox" name="cuisine_Japanese" value="Japanese" onClick="checkAll(document.subcategory.cuisine)" /> Japanese</li> 
    <li><input type="checkbox" name="cuisine_Korean" value="Korean" onClick="checkAll(document.subcategory.cuisine)" /> Korean</li> 
    <li><input type="checkbox" name="cuisine_Mexican" value="Mexican" onClick="checkAll(document.subcategory.cuisine)" /> Mexican</li> 
    <li><input type="checkbox" name="cuisine_Middle Eastern" value="Middle Eastern" onClick="checkAll(document.subcategory.cuisine)" /> Middle Eastern</li> 
    <li><input type="checkbox" name="cuisine_Pakistani" value="Pakistani" onClick="checkAll(document.subcategory.cuisine)" /> Pakistani</li> 
    <li><input type="checkbox" name="cuisine_Italian" value="Italian" onClick="checkAll(document.subcategory.cuisine)" /> Italian</li> 
</ul> 

</form> 
+1

अतिरिक्त विकल्प - '<इनपुट प्रकार = 'चेकबॉक्स' नाम = 'लैंग [एन]' />'। चेकबॉक्स की गतिशील सूची की आवश्यकता होने पर मैं यही उपयोग करता हूं। जब सूची स्थिर होती है (यानी, हार्ड-कोडेड), मैं 'name = 'lang_en'' विकल्प का उपयोग करता हूं। और मैं कभी भी चेकबॉक्स के साथ 'मान' विशेषता का उपयोग नहीं करता हूं। – binaryLV

+0

वाह इतना अच्छा है, मुझे यह कोशिश करनी है, धन्यवाद! – Nyxynyx

उत्तर

6

उत्तर:

  1. या तो काम करता है ... आप स्पष्ट नाम या किसी सरणी
  2. तुम भी array_key_exists()
  3. आप जावास्क्रिप्ट कोड आप अपने प्रश्न में प्रयोग कर रहे हैं पोस्ट कर सकते हैं का उपयोग कर सकते हैं या नहीं पर निर्भर करता है? मैं एक और देखेंगे ...

अद्यतन:

function checkAll(field){ 
    $(':checkbox[name^="cuisine_"]').each(function(index){ 
     this.checked=true; 
    }); 
} 

function uncheckAll(field){ 
    $(':checkbox[name^="cuisine_"]').each(function(index){ 
     this.checked=false; 
    }); 
} 

ध्यान दें कि क्या तुम सच में डॉन:

यहाँ अपने onclick हैंडलर को लागू करने के लिए एक jQuery समाधान है field में पास होने की आवश्यकता नहीं है, जब तक कि आप इसे सामान्यीकृत नहीं करना चाहते हैं और प्रारंभिक पैटर्न (जैसे cuisine_) के लिए स्ट्रिंग में पास करना चाहते हैं।

+0

हाय thnx! मैंने उपरोक्त मूल मुख्य पोस्ट – Nyxynyx

+0

में कोड शामिल किया है क्या आप # 3 के लिए jQuery का उपयोग करने में रुचि रखते हैं? मैं एक समाधान का प्रस्ताव दे सकता हूं जो jQuery चयनकर्ता का उपयोग उन सभी चेकबॉक्स तत्वों की सरणी बनाने के लिए करता है जो "cuisine_" से शुरू होते हैं। मुझे बताएं। –

+0

हां यह बहुत अच्छा होगा! मुझे जल्द ही AJAX का उपयोग करना होगा, इसलिए मुझे भी jQuery सीखना होगा। – Nyxynyx

6

1। दोनों काम, लैंग [] के साथ समाधान अधिक लचीला है।उदाहरण के लिए यदि आपके पास कुछ श्रेणियों में चेकबॉक्स की सूची के साथ वास्तव में लंबा रूप है, उदाहरण के लिए। भाषा उपयोगकर्ता बोलता है, जिन देशों में उन्होंने दौरा किया, कारें उन्होंने चलाईं, और मान लें कि प्रत्येक सूची में 10 तत्व होते हैं, फिर उनमें से प्रत्येक को कड़ी कोडिंग करना दर्द होता है ..., PHP पक्ष पर आपको मैन्युअल रूप से प्रत्येक तत्व की जांच करनी होगी , और एक सरणी के साथ आप यह कर सकते हैं:

if (isset($_POST['lang'] && is_array($_POST['lang']) 
{ 
    // let's iterate thru the array 
    foreach ($_POST['lang'] as $lang) 
    { 
     // do some super-magic here 
     // in your example array elements would be $_POST['lang'] = array('en','fr','es') 
    } 
} 

2। जैसा कि उपरोक्त कहा गया था कि किसी भी भाषा का चयन किया गया था या नहीं:

if (in_array('en', $_POST['lang'])) 

3। यदि आप jQuery का उपयोग करने जा रहे हैं तो बस इस स्निपेट का उपयोग करें:

// selector ATTRIBUTE*=VALUE find all tags wchich ATTRIBUTE string contains VALUE 
$('input[name*=lang]').attr('checked', 'checked'); // check 
$('input[name*=lang]').removeAttr('checked'); // uncheck 
संबंधित मुद्दे