2010-10-20 8 views
6

यह मूल रूप से शीर्षक कहता है .. मेरे पास एक चुनिंदा नियंत्रण वाला एक रूप है जिसे मैं फ़ॉर्म पर परिवर्तन पर स्वयं को पोस्ट करने के लिए मजबूर करना चाहता हूं।PHP: चुनिंदा परिवर्तन पर, स्वयं को पोस्ट फॉर्म

$bmsclientlist = $clientobj->getBMSClientList(); 

echo '<form name="changebmsid" method="post" action="' . $_SERVER['PHP_SELF'] . '"><select name="bmsid">'; 

foreach($bmsclientlist as $bmsclient) { 
    $var = ''; 
    if($client['bmsid'] == $bmsclient['id']) { 
     $var = ' selected="selected"'; 
    } 
    echo '<option value="' . $bmsclient['id'] .'"'. $var .'>' .$bmsclient['clientname'] . '</option>'; 
} 

echo '</select></form>'; 

$backupobj = new AdminBackup(); 

if(isset($_POST['bmsid']){ 
    $statusarray = $backupobj->getStatusTotalsbyId($_POST['bmsid']); 
}else{ 
    $statusarray = $backupobj->getStatusTotals(); 
} 

मुझे पता है कि इसमें कुछ जावास्क्रिप्ट शामिल होने जा रहा है लेकिन मुझे यह भी सुनिश्चित नहीं है कि इसे कैसे प्राप्त किया जाए।

किसी भी मदद की सबसे सराहना की!

धन्यवाद,

Jonesy

उत्तर

12

यह एक <select> कि माता-पिता प्रपत्र सबमिट जाएगा

<form method="post" action="#" name="myform"> 
    <select name="x" onchange="myform.submit();"> 
     <option value="y">y</option> 
     <option value="z">z</option> 
    </select> 
</form> 

आपको बस इतना करना है अपने <form> को एक नाम देना और करने के लिए onchange घटना को जोड़ने है आपका <select> ...


एडम सही है। जबकि उपरोक्त उदाहरण पूरी तरह से काम करता है, मैं इसे इस तरह करना होगा:

jQuery का उपयोग करना लेकिन यहाँ कई अन्य विकल्प उपलब्ध हैं ...

<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script> 
    $(document).ready(function(){ 
     $('#mySelect').change(function(){ 
      myform.submit(); 
     }); 
    }); 
</script> 
</head> 

और फार्म

<body> 
<form method="post" action="" name="myform"> 
    <select name="x" id="mySelect"> 
     <option value="y">y</option> 
     <option value="z">z</option> 
    </select> 
</form> 
</body> 
+2

ध्यान दें कि यह करने का मुख्य तरीका यह है कि यह अर्थपूर्ण कोड नहीं है - अचूकता को डोमेन लोड या बाहरी स्क्रिप्ट को एक लोड लोड इवेंट जैसे jquery '$ (दस्तावेज़) का उपयोग करके सारणीबद्ध किया जाना चाहिए। पहले से –

+0

अविभाज्य जेएस का अच्छा सरल उदाहरण। –

+0

आपके उदाहरण में, jQuery का उपयोग करने का क्या फायदा है? @adam, क्या आप अपने सुझावों को दर्शाने के लिए एंड्रे का जवाब संपादित कर पाएंगे? मैं उत्सुक हूं कि इसे बेहतर कैसे बनाया जाए। –

7

त्वरित सुधार यह है:

अपनी चयन सूची में एक विनिमय विशेषता जोड़ें

<select name="bmsid" onchange="javascript: form.submit();"> 
2

इस के लिए अपने चयन मेनू बदलें:

<select name="bmsid" onchange="document.forms['changebmsid'].submit()"> 

अद्यतन

यहाँ एक और संभव दृष्टिकोण है:

<script type="text/javascript"> 
    window.onload = function() { 
     document.forms['myform'].addEventListener('change', function() { 
      this.submit(); 
     }, true); 
    }; 
</script> 

रखें कि आपके पृष्ठ पर कहीं भी, और आप आप के रूप में छोड़ सकते हैं ज्यों का त्यों।

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