11
votes

JQuery: Comment bouclez-vous à travers chaque nouvelle ligne de texte dactylographié à l'intérieur d'une textarea?

permet de dire à l'intérieur d'un


0 commentaires

7 Réponses :


3
votes

Je pense que votre problème est avec l'objet JQuery. VAL () renvoie une chaîne et Split () retournera un tableau. Mais chaque () est une propriété de l'objet JQuery. Essayez cela à la place:

$($('textarea[name=sometextarea]').val().split('\n')).each(function(e){
alert($(this));                                 
});


1 commentaires

La méthode $ (). Chaque méthode est destinée à itération des éléments sur les éléments, la méthode $. () Est recommandée pour itérant d'autres objets, comme un tableau de chaînes.



23
votes

L'objet Array n'a pas de chaque . Comme vous bouclez des chaînes et non des éléments, utilisez la méthode jQuery.ache (au lieu de la jQuery (). Chaque méthode): xxx


3 commentaires

Cela renvoie [objet objet] et non la chaîne. J'ai essayé cela.text (), et il ne dit aucune erreur méthode.


Son dit cela.text () n'est pas une fonction.


@AogHQ: JQuery jette la valeur à un objet pour une raison quelconque. Vous pouvez utiliser une chaîne (ceci) pour récupérer la valeur à la chaîne.



0
votes

Comme ça ... XXX


0 commentaires

1
votes

jQuery fournit une méthode chaque code> sur le jQuery code> (ou $ code>) objet. Cela devrait être utilisé, plutôt que de créer un objet JQuery sur un tableau:

$.each($('textarea[name=sometextarea]').val().split('\n'), function(e){
    alert(this);
});


0 commentaires

0
votes

Si j'ai une textareée qui a une largeur de la largeur et que le texte dactylographié, où le texte va automatiquement à une nouvelle ligne en raison de la fin de Texarea, cette chaîne peut-elle être divisée en nouvelle chaîne par ligne?


0 commentaires

-1
votes

Je l'ai résolu avec CodeDigniter et PHP. Voici un code:

$this->load->helper('text');
$name = 'some text that is longer than the width of text area and you need to do some thing with it...';
$name_array = word_wrap($name, 20); //20 is a number of character where your text will be wrapped.
foreach(preg_split("/((\r?\n)|(\r\n?))/", $name_array) as $line){
         echo $line.'</br>';
    //from here, you can do what ever you want with $line, put it to another array..whatever
}


0 commentaires

1
votes
$("#your-text-area").live("keypress",function(){
            var lines = $(this).val().split("\n");
            $.each(lines, function(n, elem) {
                     console.log(elem);
            $("<li></li>").text(elem).appendTo($("#target"));
});
You can "listen" using live on keypress, as the others suggested split by newline and the trick in the loop is that with "each" you get an index and value (elem in the code). This snippet appends the line value to another target element which you can empty before looping using 
    $("#target").empty();

0 commentaires