2012-11-22 13 views
9

Eventuali duplicati:
How to get number of rows in <textarea >?Contare il numero di righe visualizzate (non nuove) in una textarea HTML senza jQuery?

Ho un textarea e scrivo 7 lines in essa con solo 2 new line character come qui di seguito, solo immaginare la seguente finestra di codice è un textarea e solo due volte l'entrare il tasto è premuto.

A text box, text field or text entry box is a kind of widget used when building 
a graphical user interface (GUI). A text box purpose is to allow the user to 
input text information to be used by the program. 
User-interface guidelines recommend a single-line text box when only one line of 
input is required, and a multi-line text box only if more than one line of input 
may be required. 
Non-editable text boxes can serve the purpose of simply displaying text. 

Dopo aver scritto alcuni più linee se ora il textarea line count è n. Come posso calcolare il valore di n?

Si prega di essere chiari prima di rispondere alla domanda. Non voglio contare quanti new line characters ci sono nel mio testo come questo. How to get the number of lines in a textarea?

voglio contare il numero di linee, come come come Microsoft Word count da un passaggio.

senza jQuery si prega di ...

+3

Che cosa hai provato? (Lo scopo di StackOverflow è quello di aiutarti a risolvere i problemi, non di fare il tuo incarico per te. Dovresti almeno tentare di risolvere il problema da solo.) – jdigital

+1

@jdigital Cerco in google con molte parole chiave ... ma trovato nessun modo da dove cominciare ... e sui codici non funziona per me ... – NazKazi

+3

Non è la risposta più promossa a [questa domanda] (http://stackoverflow.com/questions/1760629/how-to-to get-number-of-rows-in-textarea) proprio quello che vuoi? –

risposta

3

si potrebbe provare questo. non l'ho provato fino ad ora, ma ricordo che questo dovrebbe funzionare bene.

var lineHeight = document.getElementById("yourTextarea").style.lineHeight; 
var scrollHeight = document.getElementById("yourTextarea").scrollHeight; 
document.getElementById("yourTextarea").style.height = scrollHeight; // this is just for showing purposes 
var numLines = Math.floor(scrollHeight/lineHeight); 

questo dovrebbe essere il modo più semplice che penso.

EDIT

ecco la risposta, il più semplice è: D

primo make shure per dare textarea un valore per colli

e ora controllare questo out =

<textarea id="mytext" cols="10" rows="12"> 
</textarea> 
<input type="button" value="Count Rows" onclick="countRows();"/> 
<script type="text/javascript"> 
function countRows() { 
    var stringLength = document.getElementById("mytext").value.length; 
    var count = Math.ceil(stringLength/document.getElementById("mytext").cols); 
    // just devide the absolute string length by the amount of horizontal place and ceil it 
    alert(count); 
} 
</script> 

ora questo dovrebbe funzionare come dovrebbe.

UPDATE

si può anche fare in modo di rimuovere tutti gli elementi "nuova linea" o solo l'ultimo carattere se si tratta di una "nuova linea" nella stringa di befor ottenere la lunghezza. in questo modo non verranno contate le linee aggiuntive indesiderate.

ASSICURATI inoltre di NON impostare la "larghezza" della casella di testo !! questo farà sì che il testo di una riga vada oltre il valore di "cols". in questo modo il valore "count" ti darà il conteggio delle righe, se lo fosse con una larghezza max-row del valore di cols. quindi l'unico modo per impostare la larghezza della casella di testo con l'attributo cols.

UPDATE 2

Penso che se si desidera un modo non buggy non v'è alcun modo per aggirare utilizzando PHP o jQuery.

anche la seconda soluzione è solo un modo rapido e sporco. dovresti codificare una logica che controlla ogni parola se è più lunga della larghezza awaylable e controlla anche ogni riga per le parole che sono state messe nella riga successiva a causa dello spazio insufficiente.

questo richiederà alcune abilità logiche e per inattività non scriverò il codice per ora.

se si desidera che io pubblichi una soluzione completa Javascript, PHP o jQuery, per favore fatemelo sapere. (non vedo alcun motivo per non utilizzare jQuery per questo)

+0

la mia 'textarea vuota' viene fornita con 12 righe ... quindi quando scriverò 7 righe, mi restituirà 12 ... – NazKazi

+1

ho trovato un altro modo , sto solo provando proprio ora – Ace

+0

ci vai il mio amico – Ace