2013-06-10 3 views
0

J'ai une longue table d'éléments avec une case à cocher. Je Onchange appelle une fonction qui avertit simplement la valeur vérifiée:Case à cocher 'coché' valeur incohérente indéfinie

<input class="selectedCB" id="13" onchange="showInput(13);" type="checkbox"> 
<input class="selectedCB" id="14" onchange="showInput(14);" type="checkbox"> 
<script language="JavaScript" type="text/javascript"><!-- 
    function showInput(idx) { 
    alert($('#'+idx).prop('checked'));  
    } 
//--></script> 

Dans ma page (plein d'autres scripts et d'autres choses) je reçois non défini de certains et la valeur correcte des autres. Dans une page de test «propre», ils fonctionnent parfaitement. Je ne sais pas par où commencer à chercher quoi d'autre pourrait rendre certains indéfinis quand ils sont cochés. Des idées?

+2

Pourquoi les numéros d'utilisation comme ID de ... – lifetimes

+0

Can vous créez un jsFiddle qui illustre le problème? – j08691

+0

Éléments de contenu de base de données uniques - Je ne concatène pas une chaîne de caractères pour que je ne doive plus l'exploser plus tard. – Lochinvar

Répondre

2

Vous pouvez définir l'attribut onchange comme:

onchange="showInput(this.checked);" 

et le javascript comme:

function showInput(ischecked) { 
    alert(ischecked); 
} 

FIDDLE DEMO

+0

Merci Palash - cela a fonctionné (ou au moins une légère variation pour passer l'ID ainsi que je sais qui éléments associés à afficher/masquer) – Lochinvar

0

Puisque vous obtenez undefined sur quelques cases à cocher, mais pas d'autres, je Je parie que vous avez quelques fautes de frappe lors de l'attribution des gestionnaires.

Essayez d'attribuer votre gestionnaire une fois pour toutes les cases et voir si cela aide:

$(function() { 
    $('input[type="checkbox"].selectedCB').on('change', function(e) { 
     alert($(this).prop('checked')); 
    }; 
}); 
+0

Oui, merci - J'ai essayé, mais en raison de la séquence d'appels ajax qui charge le contenu, cette méthode ne fonctionne pas dans ce cas. En outre, les éléments sont créés par un script php côté serveur, de sorte que les fautes de frappe "devraient" être systématiquement erronées. – Lochinvar

1

Essayez d'utiliser le sélecteur :checked et .is() méthode filtre

<input class="selectedCB" id="13" onchange="showInput(13);" type="checkbox"> 
<input class="selectedCB" id="14" onchange="showInput(14);" type="checkbox"> 
<script language="JavaScript" type="text/javascript"><!-- 
    function showInput(idx) { 
    alert($('#'+idx).is(':checked'));  
    } 
//--></script> 
+0

Salut Arun - pour une raison quelconque, cela a également continué à me donner des résultats incohérents/faux. – Lochinvar

Questions connexes