2009-05-19 8 views
2

Ich habe gerade einige sehr gute Hilfe heute mit einem früheren jQuery-Problem erhalten und dachte, da mein Glück lief, könnte ich vielleicht auch Hilfe mit einigen Checkboxen bekommen. Kann mir bitte jemand sagen, was ich falsch mache?JQuery übermittelte Werte für Checkboxen sind undefined

Danke!

Die Kontrollkästchen geben die Bool-Werte der Datenbank korrekt wieder, aber wenn ich die geänderten Werte übergebe, zeigt eine alert() an, dass sie nicht definiert sind.

 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

Hallo Frank, brauche vielleicht mehr Code hier, danke. – alex

+0

Bitte den Code einreichen. – tvanfosson

+0

Hallo tvanfosson. Was meinst du mit dem Sublit-Code? Tut mir leid, ich bin wirklich sehr neu in jQuery. Meinst du mein Formular-Tag? –

Antwort

0

Ihre Wähler für die Kontrollkästchen sind nicht korrekt.

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'; 

Man könnte auch so etwas wie verwenden:

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

Diese Werte auf true/false gesetzt wird, je nachdem, ob das Kontrollkästchen aktiviert ist oder nicht.

+0

tvanfosson, danke! Ich bekomme jetzt das: admCustRptDumm = on & admCustRptDtl = auf Ich musste den Wert = "1" aus dem HTML entfernen, da es alle Felder überprüft und nicht die Werte in der Datenbank darstellt. Wenn ich das value-Attribut entferne, kann ich die Datenbank bool vals sehen. –

+0

tvanfosson, ist es möglich, dass diese Checkboxen eine "0" für falsch und eine "1" für wahr senden? Ich denke, ich verstehe das nicht, denn wenn ich das Attribut value = "1" aus dem Eingabe-Tag entferne, werden die aktuellen bool-Werte angezeigt. Wenn ich den Wert = "1" addiere, zeigen die Checkboxen NOCH die aktuellen Datenbankwerte BUT .. an, wenn ich das Formular absende, werden alle Checkboxen überprüft, ob sie wirklich sind oder nicht. Hoffnung, die Sinn macht. –

+0

@Frank - nur die markierten auswählen. Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen. – tvanfosson

0

Sie haben keinen Wert Attribut auf Ihrem HTML-Eingabeelement gesetzt

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

sonst if (item.field == "admCustRptDtl" && item.value == "1") Ist das nicht ein Wertattribut? –

+0

Frank Ich spreche nicht über den JS-Teil, überprüfe das Beispiel, das ich gepostet habe, dort gibt es ein zusätzliches Wertattribut. – duckyflip

+0

Ok, ich habe gerade den Wert = "1" zum HTML hinzugefügt und hier ist was Alert() gibt mir zurück: admCustRptDumm = undefined & admCustRptSumm = undefined & admCustRptDtl = undefined –

1

beide Eigentlich ..

die Kontrollkästchen nicht Wert haben, also wenn Sie versuchen Sie, ihre Werte zu alarmieren (es wird zu "undefiniert" führen), aber wenn Sie damit konfrontiert werden, die Checkbox selbst zu alarmieren, tun Sie wahrscheinlich etwas falsch.

Wenn Sie ihre Werte auf "true" setzen, führt dies nicht zu etwas, wie @Soviut sagte, die meisten Eigenschaften wiederholen ihre Namen bei der Einstellung. So Ihre Eingabe erhalten wie:

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

Also, um die oben versuchen und geben Sie uns ein Feedback ='p

+0

Hallo Juse, ich habe bereits den Wert = "1" für alle 3 Tags, aber ich werde immer noch undefiniert. admCustRptDly = undefined & admCustRptSumm = undefined & admCustRptDtl = undefined –

+0

Frank ich ehrlich hoffen, dass Sie einen Fehler gemacht haben, während dieser Kommentar eingeben, weil Sie sollte eigentlich den Wert = 1 bis Ihre Elemente – duckyflip

+0

Leider Jose, nicht hinzufügen Ich bin so aufgeregt über die Möglichkeit, dass dies tatsächlich funktioniert, dass mein Gehirn schneller läuft als meine Finger. :) Ja, ich habe value = "1" zu meinem Eingabe-Tag hinzugefügt. –

1

Sorry in meinem Fall war es die .attr() - funktioniert gut für mich, auch in Adobe Air.

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