Bir metin alanı HTML etiketinin satır satır okuma


93

Aşağıdaki gibi her satırın Tamsayı değeri içerdiği bir metin alanım var

      1234
      4321
     123445

Kullanıcının gerçekten geçerli değerler girip girmediğini kontrol etmek istiyorum ve aşağıdaki gibi bazı komik değerler değil

      1234,
      987l;

Bunun için satır satır metin alanı okumalı ve bunu doğrulamalıyım. JavaScript kullanarak bir metin alanını satır satır nasıl okuyabilirim?


2
% 100 emin değilim (dolayısıyla yorum) ancak metni her "\ n" de bölmeyi gerektirebilir
Pluckerpluck

Yanıtlar:


182

Bunu dene.

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
Bunun yerine kullanmanın $('textarea').val()kullanımını document.getElementById('textareaId').innerHTMLbunun da şu.
ShankarSangoli

3
Kullandığımız başka bir yöntem olduğunu hatırlıyorum. Form.elementname veya başka bir şey kullandık. Yani uzun zaman önce. 6-7 yıl önce DOM oldukça
yeniyken

Evet, document.formname.textareName.value kullanarak bile erişebilirsiniz
ShankarSangoli

3
Satırların \ n ile bitmesi garantili mi, \ r \ n değil mi?
Oztaco - Monica C.'yi yeniden görevlendirin

2020'de burada olanlar için, yukarıdaki yorumlar eklendiğinde tarayıcı davranışının ne olduğunu kesin olarak söyleyemem, ancak şu anda Chrome document.getElementById ('textarea') 'yi tanımıyor. İnnerHTML UNLESS Zaten yer tutucu metin olarak yüklenmiştir DOM'un orijinal yükünde. Kullanıcının girdiği veya değiştirdiği herhangi bir metne erişmek için document.getElementById ('textarea'). Değerini kullanmanız gerekir. Sayfa yüklenirken, yer tutucu metin <textarea> </textarea> etiketleri arasına iç HTML olarak yerleştirilir, ancak bu, bir kullanıcı girdi eklediğinde değiştirilmez.
Eric Barker

37

Bu, jQuery'ye ihtiyaç duymadan çalışır:

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

Bu size içindeki tüm geçerli sayısal değerleri verir lines. Döngüyü onaylamak, geçersiz karakterleri çıkarmak, vb. - hangisini isterseniz öyle değiştirebilirsiniz.

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

4
Genel bir not olarak, okumayı 10 / decimal ( parseInt(this, 10)) tabanı olarak zorlamak için neredeyse her zaman ikinci bağımsız değişkeni parseInt'e iletmek istersiniz . Aksi takdirde,
baştaki

5

İki seçenek: JQuery gerekmez veya JQuery sürümü

JQuery yok (veya başka bir şey gerekli)

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])
}

JQuery sürümü

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])
}

Yan not, her bir örnek döngü için tercih ederseniz

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

4

Metin alanınızı kontrol etmek için basit bir normal ifade etkili olmalıdır:

/\s*\d+\s*\n/g.test(text) ? "OK" : "KO"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.