الحد الأقصى لطول HTML <textarea>
-
09-06-2019 - |
سؤال
كيفية تقييد الحد الأقصى لعدد الأحرف التي يمكن إدخالها في HTML <textarea>
؟أنا أبحث عن حل عبر المتصفح.
المحلول
ال TEXTAREA
العلامة لا تحتوي على MAXLENGTH
سمة الطريقة التيINPUT
العلامة تفعل ذلك، على الأقل ليس في معظم المتصفحات القياسية.طريقة بسيطة وفعالة للغاية للحد من عدد الأحرف التي يمكن أن تكون كتبته الى TEXTAREA
العلامة هي:
<textarea onKeyPress="return ( this.value.length < 50 );"></textarea>
ملحوظة: onKeyPress
, ، سوف يمنع أي ضغطة على الزر، أي زر مشتمل مفتاح مسافة للخلف.
يعمل هذا لأن التعبير المنطقي يقارن طول الحقل قبل إضافة الحرف الجديد إلى الحد الأقصى للطول الذي تريده (50 في هذا المثال ، واستخدم خاصك هنا) ، ويعيد صحيحًا إذا كان هناك مجال آخر ، false
ان لم.تؤدي إرجاع خطأ من معظم الأحداث إلى إلغاء الإجراء الافتراضي.لذلك إذا كان الطول الحالي بالفعل 50 (أو أكثر) ، فإن المعالج يعيد خطأ ، KeyPress
يتم إلغاء الإجراء ولا تتم إضافة الشخصية.
ذبابة واحدة في المرهم هي إمكانية لصقها في TEXTAREA
، الذي لا يسبب KeyPress
الحدث لاطلاق النار، والتحايل على هذا الاختيار.يحتوي Internet Explorer 5+ على onPaste
الحدث الذي يمكن أن يحتوي معالجه على الشيك.ومع ذلك ، لاحظ أنه يجب عليك أيضًا مراعاة عدد الأحرف التي تنتظر في الحافظة لمعرفة ما إذا كان المجموع سيأخذك على الحد الأقصى أم لا.لحسن الحظ ، يحتوي IE أيضًا على كائن الحافظة من كائن النافذة.1 هكذا:
<textarea onKeyPress="return ( this.value.length < 50 );"
onPaste="return (( this.value.length +
window.clipboardData.getData('Text').length) < 50 );"></textarea>
مرة أخرى، onPaste
الحدث و clipboardData
الكائن هو IE 5+ فقط.للحصول على حل عبر المتصفحات، سيكون عليك فقط استخدام OnChange
أو OnBlur
معالج للتحقق من الطول، والتعامل معه كما تريد (اقتطاع القيمة بصمت، وإخطار المستخدم، وما إلى ذلك).لسوء الحظ، هذا لا يلتقط الخطأ أثناء حدوثه، فقط عندما يحاول المستخدم مغادرة الحقل، وهو أمر غير سهل تمامًا.
هناك أيضًا طريقة أخرى هنا، بما في ذلك النص البرمجي النهائي الذي يمكنك تضمينه في صفحتك:
http://cf-bill.blogspot.com/2005/05/textarea-maxlength-revisited.html
نصائح أخرى
يسمح HTML5 الآن maxlength
السمة على <textarea>
.
وهو مدعوم من قبل جميع المتصفحات باستثناء IE <= 9 وiOS Safari 8.4.يرى جدول الدعم على caniuse.com.
$(function(){
$("#id").keypress(function() {
var maxlen = 100;
if ($(this).val().length > maxlen) {
return false;
}
})
});