2009-06-29 6 views
1

J'utilise $() .post et php pour changer le contenu d'un <textarea>.jquery.post() et php

Le script est un succès - firebug montre clairement que le texte entre les balises textarea a changé, et ma petite alerte se déclenche.

L'utilisateur ne voit cependant pas les modifications. Dans Firefox, le changement ne se produit pas du tout, et dans IE, la zone de texte se met à jour jusqu'à 10 secondes en retard.

Voici le jquery J'utilise:

$(document).ready(function() { 
    $('#pv_list li:first').addClass('hilite'); 
    $("input[name='db_entries']:first").attr('checked', 'checked'); 
    $("input[name='db_entries']").click(function() { 
     $.post("changeEntry.php", {post: $(this).val()}, function(data) { 
      $("textarea").text(data);alert('done'); 
     }); 
     $('#pv_list li').removeClass('hilite'); 
     $(this).parent().addClass('hilite'); 
    }); 
}); 

Au début, je pensais que c'était parce que la page n'a pas validé, mais il valide xhtml de transition. Ce qui m'embête vraiment, c'est que je l'ai fait fonctionner plus tôt et que je n'arrive pas à comprendre ce que j'ai changé.

Répondre

3

Avez-vous essayé d'utiliser val() pour définir la valeur de la zone de texte au lieu de text()?

$.post("changeEntry.php",{post: $(this).val()}, 
     function(data) { 
      $("textarea").val(data); 
      alert('done'); 
}); 
+0

Bien dang. Je pensais que c'était seulement pour les balises qui ont réellement "entrée" dans le nom de balise. J'ai bien travaillé. Merci :) – andrewheins

+0

Pensez juste à la façon dont vous le feriez avec le DOM normal - c'est toujours textarea.value - pas textarea.nodeValue ou textarea.data ou toute autre chose. –

5
+2

+1 pour le format "Stackoverflow Archive". : P –

+1

+1 pour les liens –

+0

Merci les gars. Il est incroyablement simple de faire une recherche de site sur google, donc j'essaie d'ajouter une partie "archive" à toutes les questions similaires aux anciens sujets que Google affiche. – Sampson

-2

Je ne suis pas sûr, mais il est possible que vous devez faire:

function(data){ 
    $("textarea").attr("value",data); 
    alert('done'); 
} 
0

Ne serait-il plus facile d'utiliser la fonction load()?

$("input[name='db_entries']").click(function() { 
    $("#outputarea").load("?", {"paramName":this.value}); 
}); 
+0

Pourquoi? ' – Sampson

+0

Tout le rôle du gestionnaire onclick est de définir le contenu de l'élément textarea, n'est-ce pas? Et c'est ce que load() fait. – VolkerK