Une option dans une balise de sélection peut-elle porter plusieurs valeurs?

J’ai une balise select avec quelques options dans un formulaire HTML:
(les données seront collectées et traitées en PHP)

Essai:

  One  Two  Three  

Est-il possible pour une option de porter plusieurs valeurs comme lorsqu’un utilisateur sélectionne “One”, alors quelques autres valeurs liées à cette option seront écrites dans la firebase database.

Comment dois-je concevoir le tag SELECT pour que chacune des options puisse porter une valeur comme celle-ci:

   One  Two  Three  

Une façon de le faire, d’abord un tableau, ensuite un object:

   

Modifié (3 ans après avoir répondu) pour mettre les deux valeurs au format JSON (en utilisant JSON.ssortingngify() ) en raison d’une plainte selon laquelle ma réponse de preuve de concept “pourrait perturber un développeur débutant”.

Je me demandais cela aujourd’hui, et je l’ai réalisé en utilisant la fonction php explode, comme ceci:

Formulaire HTML (dans un fichier nommé “doublevalue.php”:

  

Action PHP (dans un fichier nommé doublevalue_action.php)

  "; echo "Colour: ". $result_explode[1]."
"; ?>

Comme vous pouvez le voir dans la première partie du code, nous créons une boîte de sélection HTML standard avec 2 options. Chaque option a 1 valeur, qui a un séparateur (dans ce cas, ‘|’) pour diviser les valeurs (dans ce cas, le modèle et la couleur).

Sur la page d’action, j’explose les résultats dans un tableau, puis appelle chacun d’eux. Comme vous pouvez le voir, je les ai séparés et étiquetés pour que vous puissiez voir l’effet que cela provoque.

J’espère que ça aidera quelqu’un 🙂

une option consiste à mettre multi valeur avec une virgule séparée

comme

 value ="123,1234" 

et dans le côté serveur les séparer

Quand j’ai besoin de faire cela, je crée les valeurs de données des autres valeurs, puis j’utilise js pour les assigner à une entrée masquée

     

il est possible d’avoir plusieurs valeurs dans une option de sélection comme indiqué ci-dessous.

  

Vous pouvez obtenir la valeur sélectionnée lors d’un événement de changement en utilisant jquery comme indiqué ci-dessous.

 $("#ddlEmployee").change(function () { alert($(this).find(':selected').data('city')); }); 

Vous pouvez trouver plus de détails dans ce lien

Si votre objective est d’écrire ces informations dans la firebase database, pourquoi devez-vous avoir une valeur primaire et des valeurs «liées» dans l’atsortingbut value ? Pourquoi ne pas simplement envoyer la valeur primaire à la firebase database et laisser la nature relationnelle de la firebase database s’occuper du rest.

Si vous avez besoin de plusieurs valeurs dans votre OPTION s, essayez un délimiteur peu commun:

  

ou ajoutez un littéral d’object (format JSON):

  

Cela dépend vraiment de ce que vous essayez de faire.

mettre des valeurs pour chaque option comme

  

du côté serveur en cas de php, utilisez des fonctions comme exploser [array] = explode ([delimeter], [posted value]);

 $values = explode(':',$_POST['val'] 

le code ci-dessus retourne un tableau ont seulement les nombres et le ‘:’ sont supprimés

Je l’ai fait en utilisant des atsortingbuts de données. Est beaucoup plus propre que d’autres méthodes tentant d’exploser, etc.

HTML

  

JS

 $('select.example').change(function() { var other_val = $('select.example option[value="' + $(this).val() + '"]').data('value'); console.log(other_val); }); 

Les parameters de balise en double ne sont pas autorisés en HTML. Ce que vous pourriez faire, c’est VALUE="1,2010" . Mais vous devrez parsingr la valeur sur le serveur.

Au lieu de stocker les options côté client, vous pouvez également stocker les options en tant qu’éléments de sous-tableau d’un tableau associatif / indexé côté serveur. Les valeurs de la balise select contiendraient alors uniquement les clés utilisées pour déréférencer le sous-tableau.

Voici un exemple de code. Ceci est écrit en PHP puisque l’OP a mentionné PHP, mais il peut être adapté à n’importe quel langage côté serveur que vous utilisez:

 

PHP:

  array('value1' => '1', 'value2' => '2010'), 2 => array('value1' => '2', 'value2' => '2122'), 3 => array('value1' => '3', 'value2' => '0'), ); echo 'Selected option value 1: ' . $options[$_POST['Testing']]['value1'] . '
'; echo 'Selected option value 2: ' . $options[$_POST['Testing']]['value2'] . '
';

Utilisez un délimiteur pour séparer les valeurs.

   $value = filter_input(INPUT_POST, 'myValues'); $exploded_value = explode('|', $value); $value_one = $exploded_value[0]; $value_two = $exploded_value[1]; ?> 

vous pouvez utiliser plusieurs atsortingbuts