Come leggere riga per riga di un tag HTML dell'area di testo


92

Ho un'area di testo in cui ogni riga contiene un valore intero come segue

      1234
      4321
     123445

Voglio verificare se l'utente ha davvero inserito valori validi e non alcuni valori divertenti come segue

      1234,
      987l;

Per questo ho bisogno di leggere riga per riga dell'area di testo e convalidarla. Come posso leggere riga per riga di un'area di testo utilizzando javascript?


2
Non ne sono sicuro al 100% (da qui il commento) ma potrebbe comportare la divisione del testo ogni "\ n"
Pluckerpluck

Risposte:


181

Prova questo.

var lines = $('textarea').val().split('\n');
for(var i = 0;i < lines.length;i++){
    //code here using lines[i] which will give you each line
}

14
Invece di usare $('textarea').val()usa document.getElementById('textareaId').innerHTMLquesto è tutto.
ShankarSangoli

3
ricordo che c'era un altro metodo che abbiamo usato. Abbiamo usato form.elementname o qualcosa del genere. Voglio dire molto tempo fa. 6-7 anni fa, quando DOM era abbastanza nuovo
SoWhat

Sì, puoi persino accedervi utilizzando document.formname.textareName.value
ShankarSangoli

3
È garantito che le righe finiscano con \ ne non \ r \ n?
Oztaco - Ripristina Monica C.

Per coloro che sono qui nel 2020, non posso dire con certezza quale fosse il comportamento del browser quando sono stati aggiunti i commenti sopra, ma attualmente Chrome non riconosce document.getElementById ('textarea'). InnerHTML A MENO CHE non sia già caricato come testo segnaposto nel caricamento originale del DOM. Dovresti usare document.getElementById ('textarea'). Value per accedere a qualsiasi testo che l'utente ha inserito o modificato. Al caricamento della pagina, il testo segnaposto viene inserito come HTML interno tra i tag <textarea> </textarea>, ma questo non viene modificato quando un utente aggiunge input.
Eric Barker

37

Funziona senza bisogno di jQuery:

var textArea = document.getElementById("my-text-area");
var arrayOfLines = textArea.value.split("\n"); // arrayOfLines is array where every element is string of one line

5

Questo ti darebbe tutti i valori numerici validi in lines. È possibile modificare il ciclo per convalidare, eliminare i caratteri non validi, ecc., A seconda di ciò che si desidera.

var lines = [];
$('#my_textarea_selector').val().split("\n").each(function ()
{
    if (parseInt($(this) != 'NaN')
        lines[] = parseInt($(this));
}

4
Come nota generale, quasi sempre si desidera passare il secondo argomento a parseInt per forzare la lettura come base 10 / decimal ( parseInt(this, 10)). Altrimenti, gli zeri iniziali portano all'interpretazione come base 8 (ottale), che può portare a un comportamento piuttosto strano ...
IMSoP

5

Due opzioni: nessuna JQuery richiesta o versione JQuery

Nessun JQuery (o qualsiasi altra cosa richiesta)

var textArea = document.getElementById('myTextAreaId');
var lines = textArea.value.split('\n');    // lines is an array of strings

// Loop through all lines
for (var j = 0; j < lines.length; j++) {
  console.log('Line ' + j + ' is ' + lines[j])
}

Versione JQuery

var lines = $('#myTextAreaId').val().split('\n');   // lines is an array of strings

// Loop through all lines
for (var j = 0; j < lines.length; j++) {
  console.log('Line ' + j + ' is ' + lines[j])
}

Nota a margine, se preferisci ogni loop di esempio è

lines.forEach(function(line) {
  console.log('Line is ' + line)
})

4

Una semplice regex dovrebbe essere efficace per controllare la tua textarea:

/\s*\d+\s*\n/g.test(text) ? "OK" : "KO"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.