Adăugați liniuță cu jQuery la sfârșitul fiecărui rând de textarea

Așa că am început să vorbesc despre câteva zile, dar nu am găsit o soluție până acum, așa că mă întorc cu voi în speranța că există chiar o soluție posibilă pentru asta.

Am nevoie, la sfârșitul fiecărei linii într-o textare, să adaugă o linie înainte de a fi trimisă la PHP. Asta este, chiar dacă utilizatorul nu apasă butonul Enter, dar dacă un cuvânt a fost tăiat de sau doar sare în jos un rând pentru că a umplut cu cu textarea. Și trebuie să fac acest lucru cu jQuery sau Javascript.

Are cineva idei bune despre cum să facă acest lucru?

Mulțumiri!

Update: Keep in mind that I also need to send the text via a json encoded string with Ajax to PHP. I should have mentioned that!

0
Ar trebui să țineți cont de faptul că utilizatorii apasă tasta ENTER și folosesc funcția nl2br a PHP.
adăugat autor Sarfraz, sursa
@Sarfraz Va fi o intrare dinamică din partea utilizatorilor și, prin urmare, nu există control asupra acestui lucru.
adăugat autor lpetren, sursa
@davidethell aș putea să fac asta, nu pe cuvânt, ci pe numărul de caractere, dar ar tăia cuvinte, așa că ar trebui să construiesc ceva care să testeze dacă cuvintele se pot potrivi pe un singur rând și apoi să mute întregul cuvânt etc. Se simte inutil
adăugat autor lpetren, sursa
Problema pe care o vei avea este că diferite browsere vor împacheta cuvintele în locuri diferite, chiar și cu o lățime fixă ​​pe textarea. De ce nu-ți rupi singur atât de multe cuvinte?
adăugat autor davidethell, sursa

3 răspunsuri

Există un atribut puțin cunoscut numit wrap pentru textarea s. Totuși, nu este standard, astfel încât kilometrajul compatibilității browserului dvs. poate varia. Accesați http://jsfiddle.net/nj3cG/ cu crom și trimiteți formularul în timp ce urmăriți fila de rețea în instrumentele cromului dev. Veți vedea linii noi în ceea ce este trimis împreună cu formularul

enter image description here

http://www.abiglime.com/webmaster/reference/html/ tag-uri/textarea.htm


Descriere

Atributul wrap se utilizează pentru a defini modul în care textul se va înfășura în caseta de text. Valorile posibile:

  • off disallows word wrapping
  • physical allows word wrapping and send the text with line breaks in tact when transmitting the data using scripting. Can also be called hard in some browsers
  • virtual show word wraps in the box but sends the data as one long string of text when transmitting the data with scripts. Can also be called soft in some browsers
0
adăugat

Textarea element has COLS attribute, which means maximum number of characters per line. Browser will jump the word that includes the (COLS+1)th character. You could write a piece of JavaScript that roughly does something like this.

  • Have a counter to calculate characters since last linebreak.
  • Loop through the string character by character.
  • If you see a linebreak, reset counter.
  • If you see a 21th character since last linebrak (or beginning), go backwards until you see beginning of the word (space for example) add linebread and reset counter and continue.
  • Else increase counter

Notice that wrapping the line is part of the browsers logic, so if you want it exactly as in browser, you may have to research every browser (for example what they consider as word-break).

0
adăugat
0
adăugat
Hei asta a fost exact ceea ce am nevoie, nu am vrut sa scriu acest gen de scenariu chiar acum, dar multumesc, functioneaza perfect. @Mubix
adăugat autor lpetren, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com