7
votes

PHP: sur sélectionner le changement, post-forme à soi-même

C'est fondamentalement ce que dit le titre. J'ai un formulaire avec un contrôle SELECT que je souhaite forcer le formulaire à poster sur vous-même sur le changement.

$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();
}


0 commentaires

3 Réponses :


14
votes

Ceci est un ...


Adam a raison. Tandis que l'exemple ci-dessus fonctionne parfaitement, je le ferais comme ceci:

en utilisant jQuery mais il y a Beaucoup d'autres options disponibles ... xxx

et le formulaire xxx


5 commentaires

Notez que, même si c'est la voie essentielle de le faire, ce n'est pas un code sémantique - l'ondange doit être résumé à la tête du document ou à un script externe à l'aide d'un événement DOM Load, tel que JQuery $ (document) .Ready


Bel exemple simple de JS non obstrissant.


Dans votre exemple, quel est le bénéfice à utiliser jQuery? @adam, seriez-vous en mesure de modifier la réponse d'André pour refléter vos suggestions? Je suis curieux de faire cela mieux.


@Ryanedwards, le commentaire d'Adam mentionnait la première partie de ma réponse. La partie JQuery reflète déjà ses suggestions avec jQuery placé au document . Avantages d'utiliser jQuery? Vous pouvez accomplir la même chose avec moins de code.


cela.form.submit (); est plus facile à réutiliser.



8
votes

Une solution rapide est ceci:

Ajoutez un attribut Onchange à votre sélection de sélection p>

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


0 commentaires

2
votes

Changez votre menu SELECT sur ceci:

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


0 commentaires