Comment POST vide & lt; sélectionnez .. plusieurs & gt; Éléments HTML si vide?
J'ai suivantes multi-sélectionner la zone dans un formulaire HTML, où l'utilisateur peut sélectionner un ou plusieurs option.
<select id="eng_0" name="eng_0[]" multiple size="3">
<option value="Privilégier">Privilégier</option>
<option value="Accepté">Accepté</option>
<option value="Temporaire">Temporaire</option>
</select>
Lorsque l'utilisateur sélectionne pas l'option, le formulaire est Posté à un PHP backend mais il ne crée pas de tableau vide, la valeur de $_POST['eng_0"] comme si le champ n'était même pas sur la forme.
C'est le genre de décoché la case à cocher qui n'est pas soumis problème.
Est-il possible d'avoir ce POST de sélectionner un objet, même s'il n'existe aucune option sélectionnée? Il peut être en jQuery si cela aide.
source d'informationauteur Vincent
Vous devez vous connecter pour publier un commentaire.
Si votre formulaire est généré dynamiquement, vous pourriez inclure une forme cachée de l'élément avec le même nom qui contient une valeur factice. Puis, il suffit d'ignorer la valeur factice, si la valeur que vous obtenez pour cette variable est
['dummy_value']
alors vous pouvez considérer que le sens de "rien n'est sélectionné" dans votre code.Est-il une raison pour laquelle vous ne pouvez pas traiter la situation où le tableau n'est pas comme s'il lui a été envoyé avec pas de contenu?
EDIT:
Ajouter un champ caché à chaque fois que la sélection multiple est présent dans votre formulaire:
Puis vérifier:
Vous pouvez ajouter un - s'il vous plaît sélectionnez - entrée et une présélection.
que si, même lorsque l'utilisateur sélectionne, rien sur les sélectionner arrive dans le $_POST?
Lorsque je fais un print_r($_POST); de l'autre côté de la sortie est tout simplement:
Array ( [acao] => ajouter [id] => 3 ) et aucun signe de la balise select, même lorsque je change la valeur de l'autre côté;
Si vous ajoutez un caché d'entrée avant les multiples sélectionnez l'élément, il va envoyer le caché de la valeur d'entrée si aucune des multiples sélectionnez les éléments ont été sélectionnés. Dès que vous sélectionnez une option, cependant, que la valeur sélectionnée est utilisée à la place.
De cette façon, j'ai été en mesure de distinguer les 2 scénarios différents dans Laravel/php:
myitems
à vide (nécessitant l'caché d'entrée, de sorte que PHP reçoit une chaîne vide pourmyitems
)myitems
(donc à l'exclusion de toutemyitems
formulaire de saisie du formulaire. PHP ne recevrez pas lemyitems
clé)Exemple de code:
si il n'y a pas de $_POST, Post une chaîne vide (rien) est absolument la solution la plus simple.
Ici ma solution pour un Formulaire avec un
<select name="related[]" multiple>
il suffit d'ajouter la ligne suivante dans le php section qui gère le stockage de votre formulaire:
Inclure
<input type="hidden" name="yourfield" value="" />
à votre formulaire dont le nom est le même que pour votremultiple="multiple"
sélectionnez.Il est regrettable que les navigateurs ne pas envoyer de formulaire vide paramètres pour
multiple="multiple"
sélectionne comme ils le font pour les non-multiples sélectionne ou un normal entrées.À l'aide d'une valeur factice, comme proposé dans l'acceptation réponse n'est pas très propre solution.
(Cette question n'a rien à voir avec jQuery)