La liaison radio les boutons et le texte des entrées
J'essaie d'associer une radio de saisie avec saisie de texte. Comme vous pouvez le voir dans l'image, il y a deux options. Je sais que je peux utiliser for=""
d'associer l'étiquette à l'entrée radio, mais comment puis-je également l'associer à la saisie de texte en dessous, et vice versa, de sorte que lorsque je se concentrer sur la saisie de texte, si se concentre le bon bouton radio?
REMARQUE: Le montant inscrit sera inséré dans la base de données, de sorte que c'est la partie la plus importante de cette forme. Actuellement, si je clique sur $de rabais, je peux toujours entrer un nombre en %Off. Je ne veux pas que cela arrive, afin que l'utilisateur ne pas confondre.
Balisage:
<div class="row-fluid control-group">
<div class="span7 pull-left">
<label class="radio" for="discount-dollars">
<input type="radio" name="discount" id="discount-dollars" value="dollars" checked="checked">
$ Off
</label>
<div class="input-append">
<input type="text" name="discount-dollars-amount" id="discount-dollars-amount" class="input-small dollars" placeholder="enter amount">
<span class="add-on">.00</span>
</div>
</div><!-- .span7 .pull-left -->
<div class="span5">
<label class="radio" for="discount-percent">
<input type="radio" name="discount" id="discount-percent" value="percent">
% Off
</label>
<input type="text" name="discount-percent-amount" id="discount-percent-amount" class="input-small percent" placeholder="enter amount" disabled="disabled">
</div>
</div><!-- .row-fluid .control-group -->
<script type="text/javascript">
$(function (){
$("form input[type=radio]").click(function (){
//get the value of this radio button ("dollars" or "percent")
var value = $(this).val();
//find all text fields...
$(this).closest("form").find("input[type=text]")
//...and disable them...
.attr("disabled", "disabled")
//...then find the text field whose class name matches
//the value of this radio button ("dollars" or "percent")...
.end().find("." + value)
//...and enable that text field
.removeAttr("disabled")
.end();
});
});
</script>
Je pense que jQuery est une bonne solution, je ne suis pas le meilleur à la construction de fonctions encore.
OriginalL'auteur chris_s | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser un seul
<label>
élément de l'étiquette de deux entrées séparées. Je suggère d'associer les étiquettes pour les boutons de la radio, depuis le bouton radio est un petit cliquez sur la cible et l'étiquette s'étend de la cible.Choisissez l'une des radios pour être sélectionné par défaut, peut-être "$". Désactiver le champ de texte par défaut:
Puis utiliser jQuery pour faire quelque chose comme ceci:
Fondamentalement, ce qui est à l'écoute de
click
événements sur les deux boutons radio. Lorsque vous cliquez sur une radio, il permet à ses associés de champ de texte (c'est à dire, le champ de texte avec un nom de classe CSS correspondant à la valeur du bouton radio) et désactive l'autre champ de texte. De cette façon, vous ne pouvez pas saisir de texte dans l'autre champ de texte, à moins que ses associés bouton radio est coché.Oups. J'ai manqué à l'origine. Mais je crois que cela permet de l'INTERFACE utilisateur inutilement complexe. Qu'advient-il si je tape quelque chose dans les deux champs de texte? Bouton-radio est coché, alors? Que faire si je tape quelque chose dans le " $ " champ de texte mais de cocher la case "% Off bouton radio"? Cette forme devient beaucoup plus sujettes à l'erreur.
C'est exactement ce que je cherche, mais ne peut pas le faire fonctionner. J'ai édité mon premier post avec mon balisage.
actuellement ce qui se passe est désactivé radio reste désactivée et la saisie de texte est toujours accessible.
Vous avez désactivé le bouton radio, pas le champ de texte. Mon code ne pas essayer d'activer et de désactiver les boutons de la radio, seuls les champs de texte.
OriginalL'auteur Brandan
utilisation de l'image bouton radio avec 2 états, sélectionnés et non sélectionnés, lorsque vous cliquez sur la case d'image définir le focus à la zone de texte et swap pour votre radio sélectionnée de l'image, et vice versa.
OriginalL'auteur martti d
Vous ne pouvez pas se concentrer sur deux éléments, le champ de saisie de texte ou le bouton radio.
Mais vous devez utiliser JavaScript ou jQuery, lorsque vous cliquez sur le bouton radio pour se concentrer sur le champ ci-dessous, ou lorsque vous entrez une valeur dans le champ ci-dessous pour vérifier le radio bouton ci-dessus.
Cela peut vous aider si vous souhaitez utiliser jquery : http://api.jquery.com/val/ et http://api.jquery.com/focus/
OriginalL'auteur Boris
C'est un TRÈS croquis pour vous aider, mais vous pourriez faire quelque chose comme ceci (vous suivez un certain naming convention):
OriginalL'auteur Ascalonian
jQuery est ce que vous voulez. En supposant que vos éléments avaient Id comme suit:
...le code pourrait ressembler à quelque chose comme ça. Cela va prendre soin de désactiver les zones de texte et la focalisation de l'entrée correctement.
OriginalL'auteur Zenexer