2009-12-18 9 views
8

Ich schreibe eine Online-Anwendung, wo ich einige Texte in die Datenbank speichern.
Es gibt 5 "textarea" und 5 "input type = text" -s.
Ich implementiere auch eine Suche, um die DB-Einträge leicht zu finden und zu bearbeiten. Ein neues Auswahlfenster wird angezeigt (mit Prototyp und Ajax), und wenn Sie auf einen der Einträge klicken, wird das folgende Formular ausgefüllt (es ist das gleiche Formular, das zum Hinzufügen neuer Ergebnisse verwendet wurde). Jetzt ist hier, wo das Problem auftritt .... Wenn ich ein neues Formular hinzufügen oder bearbeiten alle vorhandenen TEXTAREA Felder, die geändert wurden, gesperrt werden oder so ähnlich (nur Textareas, funktionieren die Eingaben noch) ... Sie Ich werde Javascripts update nicht mehr befolgen, so dass sie sich nicht ändern, wenn ich den nächsten Eintrag wähle ... ODER MINDESTENS STEHEN SIE IN FireFox (3.5.etwas). Es funktioniert gut in IE, aber da ich ein FF-Benutzer bin und ich würde es dort auch arbeiten, ich frage mich, ob jemand ähnliche Probleme gestoßen und es mit Leichtigkeit gelöst hat.
Das Problem scheint wegzugehen, wenn ich form.reset() aufrufen, aber das vermasselt einige Code generierte Auswahl/Option Felder, außerdem möchte ich die Daten zu bleiben.Kann TextArea nicht mit Javascript nach dem Schreiben manuell aktualisieren

Für mich sieht es aus wie FF entschied, dass der Text, den ich eingegeben habe, wichtiger ist als Text, den Javascript versucht zu betreten, also überschreibt es es ... und ich kann nicht herausfinden, warum. An dieser Stelle beschuldige ich .update(), aber ich weiß nicht, wie ich es sonst tun soll.
Die INPUT-Felder scheinen Probleme mit .update zu haben (oder es hat einfach nicht funktioniert), also musste ich sie in .value = umschreiben (habe versucht .value mit textareas auch, in der Hoffnung, dass das alles beheben würde, leider ohne Erfolg).

Also, hat jemand Hinweise, warum das passiert und wie man es beheben kann, ohne das Formular bei jedem Schritt neu zu setzen?

+0

Können Sie uns einen Code zur Verfügung stellen? – Gausie

+0

nicht mehr notwendig, das Problem war mit .update() ... ich versuchte das innereHTML und es funktionierte gut, nur für Tritte versuchte ich .value wieder und es funktionierte plötzlich ... Ich habe keine Ahnung, was passiert ist Gestern (als ich den ganzen Nachmittag damit verbracht habe), dass es nicht so funktionieren wollte (ich habe .text statt .value benutzt, oder es gab einen Fehler in PHPs iduno) Tut mir leid, dass ich Sie gestört habe alles für nichts – RedFury

+0

Ich denke, Sie sollten eine Antwort auf Ihre eigene Frage (nur sagen, die oben genannten) und dann überprüfen, damit diese Frage aus der unbeantworteten Fragen Warteschlange entfernt werden kann – machineghost

Antwort

2

.value und.innerHTML- schien das Problem

0

Ich habe dieses genaue Problem. Bisher habe ich versucht

$('#addofferlink').click(function(){ 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').append(offer); 
}); 

Ich habe auch versucht,

$('#addofferlink').click(function(){ 
    var e = $('#message').html(); 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').html(e+offer); 
}); 

Das Problem, das scheint zu sein, wenn der Benutzer in das Textfeld (#message) dann auf die Schaltfläche klickt das Angebot Link hinzufügen , nichts wird angezeigt. Wenn ich mir die Quelle ansehe und Firebug benutze, kann ich sehen, dass der Text, der in der Textfläche enthalten ist, geändert wird, aber nicht auf dem Bildschirm angezeigt wird.

Es scheint, dass das Javascript den HTML-Inhalt des Tags ändert, aber der Browser speichert die aktuell getippten Inhalte im Speicher (ich nehme an) oder anderswo.

Durch die Aktualisierung des Textfelds mit val (e + Angebot) wird der eingegebene Text entfernt und durch den Angebotslink ersetzt, und die Verwendung von innerHTML = e + Angebot funktioniert überhaupt nicht und zeigt keine Änderung im Textfeld.


Ich habe es geschafft, dies zu sortieren!

Mein Denken drehte sich um die Tatsache, dass, weil das Tag den Text enthält und sein eigenes schließendes Tag hat, ich seinen Inhalt mit .html() bekommen müsste.

Mit .val(), um den Inhalt des Feldes zu erhalten, können Sie dann den Inhalt einfach abrufen und aktualisieren. Ich endete mit dem folgenden,

$('#addofferlink').click(function(){ 
    var e = $('#message').val(); 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').val(e+offer); 
}); 
1

ich dieses seltsame Problem, indem sie einfach fixiert zu beheben:

document.forms[0].text_area_name.value = "STUFF"; 

Auch nach dem Textfeld das Skript überschreiben zu ändern.

innerHTML funktionierte nicht für mich nach dem Ändern der Textarea.

5

Ich hatte das gleiche Problem. Wenn HTML auf DOM-Objekt Parsen Inhalt von textarea ist innetHTML von <textarea>

<textarea cols="10" rows="10">Content of textarea</textarea> 

Werte document.getElementByTagName('textarea').innerHTML und document.getElementByTagName('textarea').value gibt diesen gleichen Wert Content of textarea

Aber nach dem Laden DOM-Objekt, ändert innerHTML Wert ändert sich nicht Inhalt textarea Box. Eine Lösung, um es zu ändern ist value Feld zu ändern.

document.getElementByTagName('textarea').value="New content of textarea"; 

oder in jquery

$("textarea").val("New content of textarea"); 
0

Sie können manchmal und lassen den Benutzer in einem Textfeld, eine bestimmte Zeichenfolge angezeigt werden sollen sehen, was es ist, dann möglicherweise machen, Änderungen; aber Sie möchten ermöglichen ihnen zu sehen, was der ursprüngliche Text war. Textareas sind ziemlich sperrig, , aber sogar eine manuelle Änderung im editierten Text ist mit diesem Setup umkehrbar.

<button id="ShowNOWxItmDscptn" onClick="EditItmDesc(1)">What is it now?</button> 
<button id="OpnTAxWriteNewEdit" onClick="EditItmDesc(2)">Write/Edit</button> 
<textarea id="RUBYxDescribe" max="500" width="75" placeholder="Magic"> </textarea> 

// a global variable: 
// UVarDescriptionTxt = ("This is the first line.\r\nSecond line!"); 

function EditItmDesc(x){ 
    console.log("*x* = "+x+"."); 
    console.log("Text to reset : "+UVarDescriptionTxt+"."); 

    var InnyShow = document.getElementById("RUBYxDescribe"); 
    InnyShow.value = UVarDescriptionTxt; 

    if(x == 1) { 
     InnyShow.innerHTML = ""; 
     InnyShow.textContent = ""; 
     InnyShow.innerHTML = UVarDescriptionTxt; 
    } 

    if(x == 2){ 
     InnyShow.value = ""; 
    } 
} 

Die obige Struktur löste dieses Problem für mich.

Verwandte Themen