التابع .focus()
في jQuery
.focus( handler )
القيمة المعادة
يُعيد كائنًا من النوع jQuery.
الوصف
ربط دالة معالج أحداث بحدث "focus" من JavaScript، أو إطلاق هذا الحدث على عنصر.
.focus( handler )
أُضيف مع الإصدار: 1.0.
handler
دالة على الشكل Function( Event eventObject )، تُنفَّذ في كل مرة يُطلَق فيها الحدث.
.focus( [eventData ], handler )
أُضيف مع الإصدار: 1.4.3.
eventData
كائن يحتوي على البيانات التي ستُمرر إلى معالج الحدث، ويمكن أن يكون من أي نوع من أنواع JavaScript.
handler
دالة على الشكل Function( Event eventObject )، تُنفَّذ في كل مرة يُطلَق فيها الحدث.
.focus()
أُضيف مع الإصدار: 1.0.
لا يقبل هذا التوقيع أي وسائط.
يُعد هذا التابع اختصارًا للتابع .on( "focus", handler )
في صورته الأولى والثانية، والتابع .trigger( "focus" )
في صورته الثالثة.
يُرسَل الحدث focus
إلى عنصر عند التركيز عليه. ينطبق هذا الحدث ضمنيًا على مجموعة محدودة من العناصر، مثل عناصر الاستمارة (<select>
و <input>
، إلخ) والروابط ( ). في إصدارات المتصفحات الحديثة، يمكن توسيع الحدث ليشمل جميع أنواع العناصر عن طريق ضبط خاصية
tabindex
للعنصر بشكل صريح. يمكن لعنصر الحصول على التركيز عبر أوامر لوحة المفاتيح، مثل مفتاح علامة التبويب، أو عن طريق النقر بالفأرة على العنصر.
يتم تمييز العناصر التي يُركَّز عليها عادةً بطريقة ما بواسطة المتصفح، على سبيل المثال باستخدام خط منقط يحيط بالعنصر. يستخدم التركيز لتحديد العنصر الذي يتلقى الأحداث المتعلقة بلوحة المفاتيح أولًا.
تؤدي محاولة التركيز على عنصر مخفي إلى حدوث خطأ في متصفح Internet Explorer. فاحرص دائمًا على استخدام التابع .focus()
على العناصر المرئية. لتشغيل معالجات أحداث التركيز الخاصة بعنصر بدون ضبط التركيز على العنصر، نستخدم التابع .triggerHandler( "focus" )
بدلاً من .focus()
.
على سبيل المثال، تأمل شيفرة HTML هذه:
<form>
<input id="target" type="text" value="Field 1">
<input type="text" value="Field 2">
</form>
<div id="other">
Trigger the handler
</div>
يمكن ربط معالج الحدث بحقل الإدخال الأول:
$( "#target" ).focus(function() {
alert( "Handler for .focus() called." );
});
الآن بالنقر على الحقل الأول، أو الانتقال إليه باستخدام زر علامة التبويب tab في لوحة المفاتيح من حقل آخر، يعرض التنبيه:
Handler for .focus() called.
يمكننا إطلاق الحدث عند النقر على عنصر آخر:
$( "#other" ).click(function() {
$( "#target" ).focus();
});
بعد تنفيذ هذه الشيفرة البرمجية، سيؤدي النقر فوق Trigger the handler
أيضًا إلى تنبيه الرسالة.
لا ينتج حدث focus
فقاعات في Internet Explorer. لذلك، لن تعمل السكريبتات التي تعتمد على تفويض الحدث مع الحدث focus بشكل متسق عبر المتصفحات. ولكن بدءًا من الإصدار 1.4.2، يعمل jQuery لتجنب هذا التحديد عن طريق استبدال focus
بحدث focusin
في توابع تفويض الحدث .live()
و .delegate()
.
ملاحظات إضافية
بما أن التابع .focus()
هو مجرد اختصار للتابع .on( "focus", handler )
، فإن فك الارتباط ممكن باستخدام .off( "focus" )
.
أمثلة
إطلاق التركيز.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>focus demo</title>
<style>
span {
display: none;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p><input type="text"> <span>focus fire</span></p>
<p><input type="password"> <span>focus fire</span></p>
<script>
$( "input" ).focus(function() {
$( this ).next( "span" ).css( "display", "inline" ).fadeOut( 1000 );
});
</script>
</body>
</html>
لمنع الأشخاص من الكتابة في مربعات إدخال النص، جرِّب:
$( "input[type=text]" ).focus(function() {
$( this ).blur();
});
للتركيز على مربع إدخال تسجيل الدخول مع معرف 'login' عند بدء تشغيل الصفحة، جرِّب:
$( document ).ready(function() {
$( "#login" ).focus();
});