2011-01-03 3 views
0

Ich habe mehrere Formulare auf meiner Seite, die dieselbe Funktion verwenden, um sie zu verarbeiten. Alles funktioniert nur gut, bis ich ein Optionsfeld hinzufügen wollte, um den Datensatz in der Datenbank zu aktivieren/deaktivieren.: radio und: checked wird nicht an meine var übergeben

Ich habe die Seite eingerichtet, so dass es ein verstecktes Formular in der Nähe eines Elements gibt. Der Benutzer klickt auf das div und mein Skript erfasst das HTML des Elements und fügt es in eine Variable ein, zeigt das Formular an und speichert das HTML (var) in einem Textfeld und blendet das Element aus. Nehmen Sie einige Änderungen vor, klicken Sie auf "Senden", "Formular einreichen", "Ausblenden" und "Anzeigen" des Elements mit dem neuen HTML-Code (Facebook-Stil). Kein Problem.

Wenn ich den Code schreibe, um den Radioknopf zu erfassen, der "überprüft" wird, funktioniert es gut. Wenn ich jedoch zu dem anderen Optionsfeld wechsle, erfasst das Formular den neuen Wert nicht. Was geht?

if (field == "disabled") { 
      var txt = $('#disabled input[name="product_disabled"]:radio').val(); 
     } else { 
      var txt = $(this).html(); 
     }; 

Dieser erfasst den Wert, kein Problem ...

Aber meine Form Handler, das dauert nur die oben genannten Informationen, nicht die neuen Informationen aus dem Formular.

var newtxt = $('#disabled input[name="product_disabled"]:radio').val(); 

Sehr seltsam ...

Hier ist die vollständige jQuery

//Begin editing section - click handler on text shows the form// 
$('[class^=edit_]').click(function(){ 
    var element = $(this).attr('class'); 
    var field = element.split('_')[1]; 
    if (field == "disabled") { 
      var txt = approval; 
     } else { 
      var txt = $(this).html(); 
     }; 
    //var txt = $(this).html(); 
    //$('[class='+element+']').hide(); 
    $(this).hide(); 
    $('[id='+field+']').show(); 
    $('[class=product_'+field+']').val(txt); 
    $('[class=product_'+field+']').focus();    
}); 
//Process the edit forms// 
$('form').submit(function(e){ 
    e.preventDefault(); 
    alert($(this).html()); 
    var element = $(this).attr('id'); 
    var newtxt = $(this + "input[name='product_disabled']:radio").val(); //$('[class=product_'+element+']').val(); 
    var product = pid; 
    var productImage = imageUrl; 
    var rb = $('#disabled input[name="product_disabled"]:radio').val(); 

    $.getJSON("cfc/editProduct.cfc?method=updateText&returnformat=json", 
       {column:element, id:product, updateText:newtxt, image:productImage }, 
       function(response) { 
        //Handle the result 
        if(response.MESSAGE == "success") { 
         $('form').hide(); 
         $('[class=edit_'+element+']').show(); 
         $('[class=edit_'+element+']').html(newtxt); 
        } else { 
         alert(response.MESSAGE); 
        } 
       }); 
}); 
//End editing section// 
+0

Verwenden Sie '

' –

+0

Sie verschieben also Text zwischen einem DIV- und einem TEXTAREA-Element und umgekehrt. Wie ist der Wert eines Radio-Buttons damit verbunden? –

+0

In allen anderen Orten auf meiner Seite ist der Text/HTML des Elements editierbar, so dass es in den TEXTAREA übernommen wird, so dass es bearbeitet werden kann. Ich versuche, meine Seite dazu zu bringen, das Formularverarbeitungsskript zu verwenden, um Optionsfelder zu verarbeiten, aber aus irgendeinem Grund hört es nicht auf das Optionsfeldformular. Das Verarbeitungsskript erkennt nicht, welcher Radiobutton aktiviert wurde ... – Ofeargall

Antwort

0

ich ein ähnliches Problem hatte, wo die erste Option leer Wert war, so habe ich diese (obwohl es für einen Auswahleingang)

$(this).val($(this + "option:first").val()); 
+0

Sie meinen '$ (this) .find ('option: first'). Val()'? –

+0

Ich meine, was ich geschrieben habe, zog ich direkt aus meinem Skript, das funktioniert;) –

+1

@Kirk Aber 'this' ist eine Referenz auf ein Objekt (das SELECT-Objekt, nehme ich an). Sie verketten 'this' mit einer Zeichenkette, was bedeutet, dass 'this' zu etwas wie '[object Object]' string-gezwungen wird. Daher ist der Selektor innerhalb von $() 'die Option [Objekt Objekt]: first', die ungültig ist. –

Verwandte Themen