2017-10-04 18 views
0

J'ai cette sélection facile à PHP comme écho (en utilisant Chosen JS):html sélection multiple choisi js soumettre le formulaire

echo" <tr> 
<th>By country:<br /> 
<select id=\"firstselect\" name=\"country[]\" 
    data-placeholder=\"Country...\" multiple class=\"chosen-select\"> 
     <option value=\"dontcare\">dontcare</option>"; 
     foreach ($states as $state) { 
      echo "<option value=\"" . $state->stat . 
       "\" >" . $state->stat . "</option>"; 
     } 
echo "</select> </th></tr>"; 

après avoir soumis de et les valeurs de rafraîchissement de la page ne sont pas aussi sélectionnés.

Si j'ai sélection avec un seul choix que cela fonctionne pour moi:

var my_val = '<?=$_POST['price']?>'; 
$("#cenan").val(my_val).trigger("chosen:updated"); 

mais je ne sais pas comment la définir comme sélectionné en cas de tableau. Pouvez-vous m'aider et me montrer du code? J'ai passé des heures et des heures sans résultat.

Répondre

0

Vous POSTEZ les données de formulaire à la même page, puis le rafraîchir, non?

Si tel est le cas, vous pouvez simplement modifier votre PHP légèrement pour marquer les options choisies comme sélectionnées lorsque la page est actualisée en vérifiant si sa valeur existe dans le tableau $_POST['country']. De plus, comme vous insérez votre sortie d'écho entre guillemets, il n'est pas nécessaire d'échapper les variables car PHP les analysera de toute façon, utilisez simplement des guillemets simples dans la chaîne où vous voulez insérer des guillemets dans votre code HTML. Beaucoup plus facile sur l'oeil.

foreach ($states as $state) { 
    if ((!empty($_POST['country'])) && (in_array($state->stat, $_POST['country']))) { 
     echo "<option value='$state->stat' selected>$state->stat</option>"; 
    } else { 
     echo "<option value='$state->stat'>$state->stat</option>"; 
    } 
} 
0

laisse supposer que vous avez HTML comme suit sélectionner:

<select id='firstselect' multiple class="chosen-select" > 
<option value='a'>A</option> 
<option value='b'>B</option> 
<option value='c'>C</option> 
</select> 

Voici la solution:

<?php 
$arr = ['a','b']; // PHP Sample Array 
?> 


var js_json = '<?php echo json_encode($arr); ?>'; 
var js_json_string = JSON.stringify(js_json); 
var js_json_array = JSON.parse(js_json_string); // ['a','b'] 


// initialize 
$("#firstselect").chosen(); 

// Loop for making HTML <select> options selected. 
$.each(js_json_array,function(i,v){ 
$('#firstselect option[value=' + v + ']').attr('selected', true); 
}); 

//Updating Chosen Dynamically 
$("#firstselect").trigger("chosen:updated");