2010-03-01 5 views
0

Tous,Problème de case à cocher et de type caché

J'ai une case à cocher et une variable cachée portant le même nom.

<input name="chk9[143]" value="" type="hidden"> 
<input name="chk9[143]" onclick="toggleParentCheckboxes(this, 'frmSomething', 0);" type="checkbox"> 

Lorsque le formulaire est affiché, je reçois la valeur de la variable cachée, même si la case est cochée ou non. C'est bon. Maintenant, si la case à cocher est désactivée via JavaScript, est-il possible de changer la valeur de l'élément caché en "désactivé" via JQuery? Ainsi, lorsque le formulaire est affiché, au lieu d'obtenir la valeur "", je devrais obtenir la valeur "désactivé".

Merci

+0

De quelle manière la case à cocher étant désactivée par JavaScript? –

+1

IMO, en utilisant un champ caché pour les cases à cocher comme ceci est inutile. –

Répondre

2

Vous voulez dire comme obtenir les cases à cocher, à la recherche d'un champ caché correspondant, et définissez la valeur selon que la case à cocher est désactivée:

$(function() { 
    $('form').submit(function(){ 
    $('input[type=checkbox]').each(function(){ 
     $('input[type=hidden][name=\''+this.name+'\']').val(this.disabled ? 'disabled' : ''); 
    }); 
    return true; 
    }); 
}); 
1

Sur l'action d'envoi du formulaire, vérifiez si la case est pas cochée. Si ce n'est pas cochée, modifiez la valeur de l'élément caché « disabled »:

$(".myform").submit(function(){ 
    $(":hidden[name='chk9[143]']") 
    .val($(":checkbox[name='chk9[143]']").is(":checked") ? "" : "disabled"); 
}); 

Cet exemple suppose que vous faites affaire avec seulement deux éléments explicites et non plusieurs ensembles de paires.

+0

Bonjour Jonathan, votre solution ressemble à la mienne: http://stackoverflow.com/questions/1127357/why-does-asp-net-mvc-html-checkbox-output-two-inputs-with-the-same-name/ 3718055 # 3718055 [Mais j'ai rendu la case à cocher en utilisant un élément inpute et j'ai utilisé jQuery pour basculer le valuy) –