Je souhaite donner à l'utilisateur la possibilité de sélectionner plusieurs éléments (qui se trouvent chacun à environ un paragraphe). Le problème est qu'un multiple select standard en html est (autant que je sache) une seule ligne par choix. C'est un problème car la mise en page devient très difficile si je laisse la ligne aller longtemps. De plus, si je ne fais que tronquer la ligne, l'essentiel du texte est perdu. Y at-il un moyen de contourner cela avec javascript? Existe-t-il une alternative qui permet à tout le texte d'être affiché et de renvoyer les valeurs dans une liste délimitée par deux-points?Envelopper le texte dans un multiple <select> list
Répondre
Il y a plusieurs façons de faire cela. Le plus simple serait de simplement mettre une case à cocher à côté de chaque paragraphe. L'utilisateur peut cocher les cases à côté des paragraphes de son choix.
Si vous disposez d'une interface plus lisse à l'esprit, vous pouvez étendre cette idée en se cachant les cases à cocher avec CSS, puis en utilisant JavaScript pour faire les cases cochées lorsque le paragraphe correspondant est cliqué et mettre en évidence le paragraphe (en appliquant un CSS class) pour le montrer comme sélectionné. Un framework comme jQuery simplifiera bien ce processus.
Edit: Maintenant que je pense, aussi longtemps que vous mettez chaque paragraphe dans un élément <label>
vous ne même pas besoin de JavaScript pour cocher/décocher les cases cachées; Cela se produira automatiquement tant que l'attribut for
du libellé est correctement défini. Tout ce dont vous avez besoin pour JavaScript est de mettre en surbrillance/non-marquer les étiquettes.
Voici une implémentation naïve en utilisant jQuery:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input.hidden-checkbox { display: none; }
label.multi-select { display: block; cursor: pointer; }
label.checked { background-color: #ddd; }
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('input.hidden-checkbox').bind('change', function(e) {
var checkBox = $(e.target),
label = $('label[for=' + checkBox.attr('id') + ']');
if(label) {
if(checkBox.attr('checked')) {
label.addClass('checked');
} else {
label.removeClass('checked');
}
}
});
});
</script>
</head>
<body>
<form>
<input type="checkbox" value="1"
name="paragraph[]" id="paragraph-1"
class="hidden-checkbox"/>
<label for="paragraph-1" class="multi-select">Text of paragraph 1.
As long as you want. Lorem ipsum dolor sit amet...</label>
<input type="checkbox" value="2"
name="paragraph[]" id="paragraph-2"
class="hidden-checkbox" class="multi-select" />
<label for="paragraph-2" class="multi-select">Paragraph 2's text.
Lorem ipsum dolor sit amet...</label>
<!-- ...etc... -->
</form>
</body>
</html>
- 1. envelopper un texte long dans un div
- 2. django multiple select dans admin change-list
- 3. Envelopper le texte dans un UILabel avec des guillemets?
- 4. comment envelopper le texte dans la cellule UITable dans Iphone?
- 5. Comment positionner et envelopper un texte long?
- 6. Gridview et List <>
- 7. Envelopper le contenu dans DIV
- 8. Comment envelopper un texte latéralement dans une colonne (tableau)
- 9. astyle formatage ligne multiple <<
- 10. Multiple <application> dans AndroidManifest.xml
- 11. Comment, prendre un fichier texte et envelopper chaque mot avec une étiquette <v></v>
- 12. Envelopper un mot dans LaTeX
- 13. Envelopper un UITableViewController dans NSProxy
- 14. Join DataTable with List <SomeObject>
- 15. iPhone: Envelopper du texte autour de l'image
- 16. DataTable to List <object>
- 17. C# List <Stream> disposer/fermer
- 18. Envelopper le texte - insensible à la casse avec php
- 19. Comment valider un composant <mx: List>?
- 20. Emacs fonction pour envelopper le texte avec printfs
- 21. List <> remove item issue
- 22. Nullable List <> comme paramètre out
- 23. C# List <> GroupBy 2 Values
- 24. Linq List <string> union
- 25. Iterate std :: list <boost :: variant>
- 26. Envelopper le texte et div comme une unité
- 27. texte zone ne fonctionne pas envelopper les
- 28. comment envelopper du texte en html?
- 29. Comment gérer l'accès synchronisé à List dans Map <String, List>?
- 30. Comment envelopper mot <ul><li><div><a></a></div></li></ul>
+1 pour l'amélioration progressive. Serait assez facile à mettre en œuvre même sans un cadre JS. – bobince