Cela peut sembler un peu étrange de poser cette question car il existe plusieurs solutions, mais le fait est que tous d'entre eux sont jolis et rien de ce que j'ai l'air enregistrer la valeur d'entrée pour la soumission du formulaire La bonne façon. Je cherche quelque chose qui remplacera toutes les entrées radio avec divs qui obtiennent des classes spéciales quand ils sont en vol stationnaire ou cliqué, et un type d'entrée caché pour chaque groupe d'entrées radio avec le même nom, entrée cachée qui sera mis à jour avec la valeur correspondant au div sur lequel l'utilisateur clique. Longue phrase, je sais. Voici ce que j'ai trouvé:remplacement d'entrée radio en utilisant jquery
$('input:radio').each(function(){
if (this.style.display!='none') {
var inputName = $(this).attr('name');
var inputValue = $(this).attr('value');
var isChecked = $(this).attr('checked');
if (!$('input:hidden[name='+inputName+']').length)
// if the hidden input wasn't already created
$(this).replaceWith('<div class="inputRadioButton" id="'+inputName+'X'+inputValue+'"></div><input type="hidden" name="'+inputName+'" value="'+inputValue+'" />');
else{
$(this).replaceWith('<div class="inputRadioButton" id="'+inputName+'X'+inputValue+'"></div>');
if (isChecked)
$('input:hidden[name='+inputName+']').attr({'value':inputValue});
}
//this bind doesn't work
$("#"+inputName+"X"+inputValue).click(function(){
if($('input:hidden[name='+inputName+']').val()!=inputValue){
$('input:hidden[name='+inputName+']').attr({'value':inputValue});
$('div[id*='+inputName+'].inputRadioButton').removeClass('inputRadioButtonSelected');
}
if (!$("#"+inputName+"X"+inputValue).hasClass('inputRadioButtonSelected'))
$("#"+inputName+"X"+inputValue).addClass('inputRadioButtonSelected');
});
}
});
Dites-moi comment résoudre ce problème. Je vous remercie.
Modifier J'ai trouvé la raison. Cela devrait normalement fonctionner mais certaines de mes entrées radio générées par un logiciel de commerce électronique comportaient des parenthèses (par exemple id [12]) et jQuery l'analysait. Le correctif ajoute
var inputButton = document.getElementById(inputName+"X"+inputValue);
avant la liaison et le remplacement $("#"+inputName+"X"+inputValue)
avec $(inputButton)
.
Je ne sais pas si vous utilisez déjà la bibliothèque de l'interface utilisateur, mais si vous êtes ... http://jqueryui.com/demos/button/#radio –