Obtenez un texte textarea avec javascript ou Jquery

j'ai une iframe qui contient un textarea, comme suit:

<html>
<body>

<form id="form1">
<div>
    <textarea id="area1" rows="15"></textarea>
</div>
</form>

</body>
</html>

je veux obtenir le texte textarea dans la page parent. J'ai essayé ceci:

var text = $('#frame1').contents().find('#area1').val();

Mais une chaîne vide est renvoyée. Cependant, si je mets une valeur dans les balises cette valeur est retourné avec succès:

<textarea id="area1" rows="15">something</textarea>

Comment puis-je obtenir la valeur du textarea de la page qui contient l'iframe?

40
demandé sur KatieK 2011-04-29 15:29:09

7 réponses

READING the <textarea>contenu:

var text1 = document.getElementById('myTextArea').value;     // plain JavaScript
var text2 = $("#myTextArea").val();                          // jQuery

ÉCRIT à l' <textarea>':

document.getElementById('myTextArea').value = 'new value';   // plain JavaScript
$("#myTextArea").val('new value');                           // jQuery

voir Démo jsfiddle ici.



utiliser .html() ou .innerHTML!

jQuery est .html() et JavaScript est .innerHTML ne doivent pas être utilisés, car ils ne saisissez pas les changements au texte du textarea.

lorsque l'utilisateur tape textarea, le .html() ne retournera pas la valeur dactylographiée, mais la première -- vérifiez le fiddle de démo ci-dessus pour un exemple.

60
répondu acdcjunior 2014-04-10 14:35:48

Pour obtenir la valeur d'un textarea avec un id vous avez juste à faire

Modifié

$("#area1").val();

Si vous avez plus d'un élément avec le même id dans le document, puis le HTML n'est pas valide.

18
répondu rahul 2011-04-29 11:49:55

Vous pouvez utiliser val().

var value = $('#area1').val();
$('#VAL_DISPLAY').html(value);
7
répondu Shawn31313 2012-09-10 18:10:14

Get textarea texte avec le JavaScript:

<!DOCTYPE html>
<body>
<form id="form1">
    <div>
        <textarea id="area1" rows="5">Yes</textarea>
        <input type="button" value="get txt" onclick="go()" />
        <br />
        <p id="as">Now what</p>
    </div>
</form>
</body>

function go() {
    var c1 = document.getElementById('area1').value;
    var d1 = document.getElementById('as');
    d1.innerHTML = c1;
}

http://jsfiddle.net/PUpeJ/3/

6
répondu dearnotmine 2013-09-01 22:00:17

Essayer .html() au lieu de .val ():

var text = $('#frame1').contents().find('#area1').html();
1
répondu Timon. Z 2011-04-29 11:35:07

@Darin Dimitrov a dit, si ce n'est pas une iframe sur le même domaine, il n'est pas possible, si c'est le cas, vérifiez que $("#frame1").contents() retourne tout ce qu'il devrait, puis vérifiez si la boîte de texte est trouvée:

$("#frame1").contents().find("#area1").length devrait être 1.

Modifier

si quand votre textarea est "vide" une chaîne vide est retournée et quand il y a du texte entré ce texte est retourné, alors il fonctionne parfaitement!! Quand le textarea est vide, un vide chaîne de caractères est de retour!

Edit 2 OK. Ici, il y a un moyen, il n'est pas très joli mais il fonctionne:

en dehors de l'iframe vous accéderez au textarea comme ceci:

window.textAreaInIframe

Et à l'intérieur de l'iframe (qui je suppose a jQuery) dans le document de prêt, mettez ce code:

$("#area1").change(function() {
    window.parent.textAreaInIframe = $(this).val();
}).trigger("change");
1
répondu Diego 2011-04-29 12:49:11

%100 Solution: $('textarea[name="areaname"]').val()

0
répondu Webbu 2018-07-26 09:19:14