2016-03-23 8 views
1

Ich habe ein Problem mit dem Wert textarea, dessen ID von Werten mit Datenbank aufgefüllt wird. Wie ist es möglich, es mit jQuery zu bekommen?Wert von Textbereich erhalten, wenn ID unbekannt ist

function updateTextarea(textarea, updateUrl) { 
    var field = textarea.attr("data-field"); 
    var id = textarea.attr("data-id"); 
    var fieldValue = document.getElementById(id).value; 
    textarea.val("Aktualisiere..."); 
    textarea.attr("readonly", "readonly"); 

    jQuery.post(updateUrl, jQuery.param({ 
     bid: id, 
     bfield: fieldValue 
    }), function(data) { 
     textarea.empty(); 
     textarea.val(data); 
     textarea.removeAttr("readonly"); 
    }); 
} 

Wo bekomme ich die textarea:

$('.arrivalssuper_row').on('focus', 'textarea[data-field="SONSTVEREINBARUNGEN"]', function(e) { 
    var textarea = $(e.target); 
    updateTextarea(textarea, 'ajax/super_departures_sonstVereinbarungen.php'); 
}); 

ich bisher versucht habe:

var fieldValue = textarea.val(); //didnt work 
var fieldValue = textarea.value; //didnt work 
var fieldValue = document.getElementById(id).value; //didnt work 

Was kann ich tun? Irgendwelche Ideen?

+0

Viele Ideen in der Tat, aber Sie müssen einige Markup zeigen, können Sie zugreifen es durch die Eltern, Geschwister usw. – Gacci

Antwort

1

Verwenden

var textarea = $(this); 

console.log(textarea.text()); 

Val wird nicht funktionieren, da es einen "Wert" Attribut zurückgibt.

Ah, ich glaube, ich habe übersehen, dass wir hier Ajax sprechen. Die Sache ist textarea Variable existiert nicht im Rahmen der Ajax Callback-Funktion. Sie sollten in Erwägung ziehen, dem Textfeld automatisch eine ID zuzuweisen (oder ein anderes Attribut, das eindeutig sein muss), diese ID mit Ihrer Ajax-Anforderung zu übergeben und sie an den Ajax-Callback zurückzugeben. Dann können Sie das Textfeld erneut durch seine ID abrufen.

Etwas wie folgt aus:

$.post(updateUrl, {bid: id, bfield: fieldValue}, function(data){ 
    $('textarea.'+data.id).text(data.value); 
}, 'json'); 

Und in Ihrem Server würden Sie sth wie (PHP)

die(json_encode(array('id' => $_POST['bid'], 'value' => 'whatever'))); 
+0

es gibt mir immer noch leeren Text – BRG

+0

Edited, versuchen Sie dies in Ihrem on ('Fokus' ... function() {...}) – Eihwaz

+0

immer noch geben mir leeren Wert., Wie ist das möglich? – BRG

1

die

var fieldValue = textarea.text(); 

Die textarea folgenden Versuchen haben Wert nicht Attribut in ihnen, haben sie zwischen dem Start- und End-Tag ihren Wert.

+0

gibt mir immer noch leeren Text – BRG

+0

Können Sie bitte Ihren HTML-Code teilen? –

+0

_textarea.val(); _ sollte auch funktionieren. –