2009-05-19 6 views
2

Je viens de recevoir une aide précieuse aujourd'hui avec un problème jQuery antérieur et je me suis dit que depuis ma chance, j'ai peut-être aussi besoin d'aide avec certaines cases à cocher. Quelqu'un peut-il me dire ce que je fais de mal?Les valeurs soumises par JQuery pour les cases à cocher sont indéfinies

Merci! Les cases à cocher font correctement écho aux valeurs booléennes de la base de données, mais lorsque je soumets les valeurs modifiées, une alerte() telle que celles-ci ne sont pas définies.

 else if (item.field == "admCustRptDly" && item.value == "1") 
     { 
      $('#admCustRptDly').attr('checked', true); 
     } 

     else if (item.field == "admCustRptSumm" && item.value == "1") 
     { 
      $('#admCustRptSumm').attr('checked', true); 
     } 

     else if (item.field == "admCustRptDtl" && item.value == "1") 
     { 
      $('#admCustRptDtl').attr('checked', true); 
     } 

<tr> 
    <td class="admMarker">Daily<input type="checkbox" id="admCustRptDly" name="admCustRptDly" class="admChkbx"></td> 
    <td class="admMarker">Summary<input type="checkbox" id="admCustRptSumm" name="admCustRptSumm" class="admChkbx"></td> 
    <td class="admMarker">Detail<input type="checkbox" id="admCustRptDtl" name="admCustRptDtl" class="admChkbx"></td> 
</tr> 

$(function() { $('.error').hide(); 
    $('input.text-input').css({backgroundColor:"#FFFFFF"}); 
    $('input.text-input').focus(function(){ 
     $(this).css({backgroundColor:"#FFDDAA"}); 
    }); 
    $('input.text-input').blur(function(){ 
     $(this).css({backgroundColor:"#FFFFFF"}); 
    }); 

     $(".admCustBtn").click(function() 
    {  // validate and process form 
      // first hide any error messages 
     $('.error').hide(); 



      var admCustRPSecPhone = 
    $("input#admCustRPSecPhone").val(); 
      var admCustRptDly = 
    $("checkbox#admCustRptDly").val(); 
    var admCustRptSumm = 
    $("checkbox#admCustRptSumm").val(); 
      var admCustRptDtl = 
    $("checkbox#admCustRptDtl").val(); 

      var dataString = 
     'admCustID='+ admCustID + 
     '&admCustRptDly='+ admCustRptDly + 
     '&admCustRptSumm='+ admCustRptSumm + 
     '&admCustRptDtl='+ admCustRptDtl; 

      alert (dataString);return false; 

      $.ajax({ 
      type: "POST", 
      url: "body.php?action=admCustomer", 
      data: dataString, 
      success: function(){ 
      alert("Success! Data Saved"); 
      } 
     }); 
     return false; }); }); 
+0

Salut Frank, pourrait avoir besoin de plus du code affiché ici, merci. – alex

+0

Veuillez inclure le code de soumission. – tvanfosson

+0

Salut tvanfosson. Que voulez-vous dire par le code de sous-location? Désolé, je suis vraiment vraiment nouveau à jquery. Voulez-vous dire mon étiquette de formulaire? –

Répondre

0

Vos sélecteurs pour les cases ne sont pas correctes.

var admCustRPSecPhone = $("input#admCustRPSecPhone:checked").val() == 'on'; 
    var admCustRptDly = $("input#admCustRptDly:checked").val() == 'on'; 
    var admCustRptSumm = $("input#admCustRptSumm:checked").val() == 'on'; 
    var admCustRptDtl = $("input#admCustRptDtl:checked").val() == 'on'; 

Vous pouvez également utiliser quelque chose comme:

var admCustRptDly = $("#admCustRptDly:checkbox:checked").val() == 'on'; 

Cela définira les valeurs true/false selon que la case est cochée ou non.

+0

tvanfosson, merci! Je reçois maintenant ceci: admCustRptDly = sur & admCustRptSumm = sur & admCustRptDtl = sur J'ai dû enlever la valeur = "1" du HTML parce qu'il vérifiait toutes les boîtes et ne représentant pas les valeurs dans la base de données. Lorsque je supprime l'attribut de valeur, je peux alors voir les valeurs bool vals de la base de données. –

+0

tvanfosson, est-il possible d'avoir ces cases à cocher envoyer un "0" pour faux et un "1" pour vrai? Je suppose que je ne comprends pas parce que quand je supprime l'attribut value = "1" de la balise d'entrée, les valeurs actuelles de bool s'afficheront. Quand j'ajoute la valeur = "1", les cases à cocher montrent TOUJOURS correctement les valeurs de base de données actuelles MAIS .. quand je soumets le formulaire, toutes les cases à cocher sont montrées vérifiées, qu'elles soient ou non en fait. J'espère que cela a du sens. –

+0

@Frank - ne sélectionnez que les cochés. J'ai mis à jour ma réponse pour refléter cela. – tvanfosson

0

Vous avez pas d'attribut de valeur définie sur votre élément d'entrée HTML

<input type="checkbox" value="1" id="admCustRptDly" name="admCustRptDly"> 
+0

else if (item.field == "admCustRptDtl" && item.value == "1") N'est-ce pas un attribut de valeur? –

+0

Frank Je ne parle pas de la partie JS, vérifiez l'exemple que j'ai posté, il y a un attribut de valeur supplémentaire là. – duckyflip

+0

Ok, je viens d'ajouter la valeur = "1" au html et voici ce que alert() me renvoie: admCustRptDly = undefined & admCustRptSumm = undefined & admCustRptDtl = undefined –

1

En fait, les deux ..

les cases à cocher n'ont pas de valeur, donc si vous essayez d'alerter() leurs valeurs cela mènera à "indéfini", mais si vous faites face à cela en alertant la case à cocher elle-même, vous faites probablement quelque chose de mal.

Mettre leurs valeurs à true, ne mènera à rien, comme le dit @Sovis, la plupart des propriétés répètent leurs noms lors du réglage. Ainsi, votre entrée obtiendra comme:

<input type="checkbox" checked="checked" value="1" name="myCheck" /> 

Alors, essayez ce qui précède et nous donner quelques commentaires ='p

+0

Salut Juse, j'ai déjà ajouté la valeur = "1" à tous 3 mais je ne comprends toujours pas. admCustRptDly = non définie et admCustRptSumm = non définie et admCustRptDtl = non définie –

+0

Frank J'espère sincèrement que vous avez fait une erreur en tapant ce commentaire parce que vous devez réellement ajouter la valeur = 1 à vos éléments non – duckyflip

+0

Désolé Jose, je suis tellement excitée au sujet de la possibilité de faire fonctionner cela que mon cerveau fonctionne plus vite que mes doigts. :) Oui, j'ai ajouté value = "1" à mon tag d'entrée. –

1

Désolé dans mon cas c'était le .attr() - fonctionne très bien pour moi, même dans Adobe Air.

jQuery('#mycheckbox').attr("checked") 
Questions connexes