Rumah  >  Artikel  >  hujung hadapan web  >  Penyelesaian kepada masalah bahawa textarea tidak boleh mengehadkan bilangan perkataan melalui kemahiran attribute_javascript panjang maksimum

Penyelesaian kepada masalah bahawa textarea tidak boleh mengehadkan bilangan perkataan melalui kemahiran attribute_javascript panjang maksimum

WBOY
WBOYasal
2016-05-16 16:38:191809semak imbas

Textarea dipanggil kawasan teks, juga dikenali sebagai kawasan teks, yang merupakan kawalan input teks berbilang baris dengan bar skrol Ia sering digunakan dalam borang penyerahan pada halaman web. Tidak seperti kawalan teks kotak teks satu baris, ia tidak boleh mengehadkan bilangan perkataan melalui atribut panjang maksimum Atas sebab ini, kaedah lain mesti ditemui untuk mengehadkannya untuk memenuhi keperluan pratetap.

Pendekatan biasa ialah menggunakan bahasa #skrip untuk mengehadkan bilangan perkataan yang dimasukkan dalam medan teks textarea, yang mudah dan praktikal. Katakan kita mempunyai kawasan teks dengan ID txta1 Kita boleh mengehadkan aksara input papan kekuncinya kepada 10 aksara (aksara Cina atau aksara sudut kecil yang lain) melalui kod berikut:

<script language="#" type="text/ecmascript"> 
window.onload = function() 
{ 
document.getElementById('txta1').onkeydown = function() 
{ 
if(this.value.length >= 10) 
event.returnValue = false; 
} 
} 
</script>

Prinsipnya adalah untuk memantau kawasan teks dengan nombor ID yang ditentukan melalui acara kekunci bawah (keyboard key press) Seperti yang anda boleh bayangkan, ia hanya boleh mengehadkan input papan kekunci jika pengguna menampal teks dalam papan keratan melalui tetikus kanan butang, ia tidak boleh mengawal bilangan perkataan.

Input melalui papan kekunci, hanya 10 aksara boleh dimasukkan dalam kawasan teks di atas. Namun, matlamat kami tidak tercapai! Hanya salin beberapa teks dan cuba tampalkannya dengan butang kanan tetikus dan lihat apa yang berlaku.

Anda boleh menemui skrip JS lain yang serupa dengan yang di atas di Internet Tidak kira betapa hebatnya ia, prinsipnya adalah sama ia memantau input dalam kawasan teks melalui peristiwa operasi kekunci papan kekunci seperti kekunci kekunci, kekunci. Halang butang tetikus kanan daripada ditampal Atas sebab ini, jika kita mesti benar-benar mengehadkan bilangan perkataan dalam kawasan teks, kita perlu menambah kunci lain pada halaman web - melumpuhkan butang tetikus ini sudah pasti akan dikenakan biaya tambahan ia juga mungkin menjadi masalah bagi pencipta halaman web Tidak semestinya bersedia untuk melakukannya. Malah, terdapat cara yang lebih mudah, menggunakan atribut onpropertychange.

onpropertychange boleh digunakan untuk menilai nilai elemen yang telah ditetapkan Apabila nilai elemen berubah, peristiwa penghakiman akan dicetuskan hanya nilai elemen yang dipantau, mengelakkan sumber input, supaya ia boleh menjadi idealnya Memenuhi had perkataan kami. Ia tergolong dalam kategori JS dan boleh digunakan bersarang dalam wakil kawasan kotak Berikut ialah kod dan gaya kesan Anda boleh menguji input seperti di atas, dan anda akan mendapati ia benar-benar mencapai tujuan: tidak kira apa kaedah digunakan untuk memasukkan, ia hanya boleh memasukkan 100 Aksara (aksara Cina atau aksara Cina lain):

Kod:

<textarea onpropertychange="if(value.length>100) value=value.substr(0,100)" class="smallArea" cols="60" name="txta" rows="8"></textarea>

Sudah tentu, untuk lebih selamat, skrip latar belakang yang memproses data borang juga harus menyemak semula data yang diserahkan Jika bilangan perkataan melebihi nombor pratetap, ia akan diproses dengan sewajarnya, untuk mencapai tujuan benar-benar mengehadkan bilangan perkataan. (Tamat)

Cara lain untuk mengehadkan bilangan aksara input dalam textarea (termasuk bahasa Cina, hanya 10 boleh dimasukkan dan kod ASCII penuh boleh memasukkan 20)

<script> 
function check() { 
var regC = /[^ -~]+/g; 
var regE = /\D+/g; 
var str = t1.value; 

if (regC.test(str)){ 
t1.value = t1.value.substr(0,10); 
} 

if(regE.test(str)){ 
t1.value = t1.value.substr(0,20); 
} 
} 
</script> 
<textarea maxlength="10" id="t1" onkeyup="check();"> 
</textarea>

Ada cara lain:

function textCounter(field, maxlimit) { 
if (field.value.length > maxlimit){ 
field.value = field.value.substring(0, maxlimit); 
}else{ 
document.upbook.remLen.value = maxlimit - field.value.length; 
} 
}
<textarea name=words cols=19 rows=5 class=input1 onPropertyChange= "textCounter(upbook.words, 50) "> textarea> 
剩余字数: <input name=remLen type=text id= "remLen " style= "background-color: #D4D0C8; border: 0; color: red " value=50 size=3 maxlength=3 readonly>
function LimitTextArea(field){ 
maxlimit=200; 
if (field.value.length > maxlimit) 
field.value = field.value.substring(0, maxlimit);
}
<textarea cols=50 rows=10 name="comment" id="commentarea" onKeyDown="LimitTextArea(this)" onKeyUp="LimitTextArea(this)" onkeypress="LimitTextArea(this)" ></textarea>

title="Lebar kawasan teks mestilah kurang daripada 300 aksara."

Contohnya:

<textarea title="The textarea width must less than 300 characters." cols=50 rows=10 name="comment" id="commentarea" onKeyDown="LimitTextArea(this)" onKeyUp="LimitTextArea(this)" onkeypress="LimitTextArea(this)" ></textarea>
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn