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?
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
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.
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.
Vous pouvez utiliser val()
.
var value = $('#area1').val();
$('#VAL_DISPLAY').html(value);
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;
}
Essayer .html() au lieu de .val ():
var text = $('#frame1').contents().find('#area1').html();
@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");