سلام دوستان عزیز ، امیدوارم که حالتون خوب باشه و تا به این ساعت روز خوبی را سپری کرده باشید.با مبحث متدها در jquery در خدمت شما هستم.
Autocompletion مکانیزمی است که به طور مداوم در وب سایت های مدرن برای ارائه ی لیستی از پیشنهادات به کاربرها برای اولین حرفی که در تکست باکس تایپ کرده، استفاده می شود. سپس کاربر می تواند یک آیتم را از لیست انتخاب کند که در فیلد ورودی نمایش داده خواهد شد. این ویژگی باعث می شود کاربر مجبور به وارد کردن کامل یک لغت یا مجموعه ای لغات نباشد.
jQuery یک ویجت autocomplete را ارائه می دهد – کنترلی که بسیار مشابه یک dropdown کار می کند، اما انتخاب ها را فیلتر می کند تا تنها مواردی را نمایش دهد که کاربر در حال تایپ در یک کنترل می باشد. jQuery متد autocomplete() برای ایجاد لیست پیشنهادات در زیر فیلد ورودی، ارائه می دهد و گروه های جدید CSS را به عناصر اضافه می کند تا به آنها استایل جدید را بدهد.
هر فیلدی که می تواند یک ورودی دریافت کند، می تواند به یک Autocomplete تبدیل شود، یعنی عناصر ، عناصر
متد autocomplete() به دو فرم زیر استفاده می شود:
$(selector, context).autocomplete (options) Method
$(selector, context).autocomplete (“action”, params) Method
متد $(selector, context).autocomplete (options) :
متد autocomplete (options) اعلام می کند که یک عنصر HTML باید به عنوان یک فیلد ورودی تنظیم شود که در بالای لیستی از پیشنهادات نمایش داده خواهد شد. پارامتر options آبجکتی است که رفتار لیست پیشنهاد ها را در هنگام تایپ کردن کاربر در فیلد ورودی، تعیین می کند.
$(selector, context).autocomplete (options);
با استفاده از آبجکت Javascript می توانید یک یا چند گزینه را همزمان ارائه داده و سپس آنها را به وسیله ی کاما از یکدیگر مجزا کنید:
$(selector, context).autocomplete({option1: value1, option2: value2….. });
جدول زیر گزینه های مختلفی را ارائه می دهد که با این متد استفاده می شوند.
Option
Description
appendTo
این گزینه برای ضمیمه کردن یک عنصر به منو استفاده می شود. مقدار پیش فرض آن null است.
autoFocus
اگر این گزینه روی true تنظیم شده باشد، وقتی منو نمایش داده شود، به طور خودکار اولین آیتم منو متمرکز می شود. مقدار پیش فرض آن false است.
delay
این گزینه یک عدد صحیح می باشد که زمان انتظار را قبل از هماهنگ کردن مقادیر، به هزارم ثانیه نشان می دهد ( همانطور که توسط گزینه ی source تعیین شده است). وقتی یک داده ی غیرداخلی با دادن وقت به کاربر برای وارد کردن کاراکترهای بیشتر قبل از شروع جستجو، مورد استفاده قرار می گیرد، این امر trashing را کاهش می دهد. مقدار پیش فرض آن ۳۰۰ است.
disabled
اگر این گزینه روی true تنظیم شده باشد، autocomplete widget از ابتدا غیرفعال خواهد بود. مقدار پیش فرض آن false است.
minLength
تعداد کاراکترهایی که باید قبل از هماهنگ سازی مقادیر(همانطور که توسط گزینه ی source تعیین شد)، وارد شوند. می تواند از تعیین مقادیر بیش از حد بزرگ جلوگیری کند وقتی که تعداد کاراکترها برای تنظیم عدد کافی نیستند. مقدار پیش فرض آن ۱ است.
position
این گزینه موقعیت پیشنهادهای منو را در ارتباط با عنصر ورودی مرتبط تشخیص می دهد. گزینه ی of پیش فرض عنصر ورودی است، اما می توانید عنصر دیگری را در مقابل این موقعیت تعیین کنید. مقدار پیش فرض آن { my: “left top”, at: “left bottom”, collision: “none” } است.
source
این گزینه روشی را تعیین می کند که در آن داده ی هماهنگ با داده ی ورودی، تنظیم می شود. یک مقدار باید ارائه شود، در غیر این صورت autocomplete widget ایجاد نخواهد شد. مقدار پیش فرض آن is none; must be specified است.
بخش بعدی مثال های کاربردی در مورد قابلیت ویجت autocomplete را ارائه می دهد.
قابلیت پیش فرض:
مثال زیر به طور ساده قابلیت ویجت autocomplete را توضیح میدهد که هیچ پارامتری را به متد autocomplete() انتقال نمی دهد.
$(function () {
var availableTutorials = [
“ActionScript”,
“Boostrap”,
“C”,
“C++”,
];
$(“#automplete-1”).autocomplete({
source: availableTutorials
});
});
استفاده از autofocus:
مثال زیر استفاده از گزینه ی autoFocus را در ویجت autocomplete از jQuery توضیح می دهد:
$(function () {
var availableTutorials = [
“ActionScript”,
“Boostrap”,
“C”,
“C++”,
];
$(“#automplete-2”).autocomplete({
source: availableTutorials,
autoFocus: true
});
});
استفاده از minLength و delay:
مثال زیر استفاده از گزینه های minLength و delay را در ویجت autocomplete از jQuery توضیح می دهد.
$(function () {
var availableTutorials = [
“ActionScript”,
“Boostrap”,
“C”,
“C++”,
“Ecommerce”,
“Jquery”,
“Groovy”,
“Java”,
“JavaScript”,
“Lua”,
“Perl”,
“Ruby”,
“Scala”,
“Swing”,
“XHTML”
];
$(“#automplete-3”).autocomplete({
minLength: 2,
delay: 500,
source: availableTutorials
});
});
استفاده از label:
مثال زیر استفاده از گزینه ی label را در autocomplete widget از JqueryUI توضیح می دهد.
$(function () {
$(“#autocomplete-4”).autocomplete({
source: [
{ label: “India”, value: “IND” },
{ label: “Australia”, value: “AUS” }
]
});
});
استفاده از source خارجی
مثال زیر استفاده از فایل خارجی را برای گزینه ی source در autocomplete widget از JqueryUI توضیح می دهد.
$(“#autocomplete-5”).autocomplete({
source: “/jqueryui/search.php”,
minLength: 2
});
فایل search.php مانند فایل بالا، در همان موقعیت جایگزین می شود (autocompleteexample.html). محتوای search.php در زیر نمایش داده می شود.
“JAVA”, “value” => “1” ),
array( “label” => “DATA IMAGE PROCESSING”, “value” => “2” ),
array( “label” => “JAVASCRIPT”, “value” => “3” ),
array( “label” => “DATA MANAGEMENT SYSTEM”, “value” => “4” ),
array( “label” => “COMPUTER PROGRAMMING”, “value” => “5” ),
array( “label” => “SOFTWARE DEVELOPMENT LIFE CYCLE”, “value” => “6” ),
array( “label” => “LEARN COMPUTER FUNDAMENTALS”, “value” => “7” ),
array( “label” => “IMAGE PROCESSING USING JAVA”, “value” => “8” ),
array( “label” => “CLOUD COMPUTING”, “value” => “9” ),
array( “label” => “DATA MINING”, “value” => “10” ),
array( “label” => “DATA WAREHOUSE”, “value” => “11” ),
array( “label” => “E-COMMERCE”, “value” => “12” ),
array( “label” => “DBMS”, “value” => “13” ),
array( “label” => “HTTP”, “value” => “14” )
);
$result = array();
foreach ($companies as $company) {
$companyLabel = $company[ “label” ];
if ( strpos( strtoupper($companyLabel), strtoupper($term) )
!== false ) {
array_push( $result, $company );
}
}
echo json_encode( $result );
?>
متد $(selector, context).autocomplete (“action”, params) :
متد autocomplete (“action”, params) می تواند فعالیتی را روی لیست پیشنهادات انجام دهد، به عنوان مثال پنهان کردن و یا نمایش دادن. فعالیت به عنوان یک String در اولین برهان نمایش داده می شود ( به عنوان مثال close برای پنهان کردن لیست). اکشن هایی را که قابل انتقال هستند، در جدول زیر مشاهده می کنید.
$(selector, context).autocomplete (“action”, params);
جدول زیر اکشن هایی را ارائه می دهد که با این متد استفاده می شوند:
Action
Description
close
این اکشن لیست پیشنهادها را در Autocomplete پنهان می کند. این متد هیچ آرگیومنتی نمی پذیرد.
destroy
این اکشن قابلیت Autocomplete را حذف می کند. لیست پیشنهادها پاک می شود و این متد هیچ آرگیومنتی نمی پذیرد.
disable
این اکشن مکانیزم autocompletion را غیرفعال می سازد. لیست پیشنهادها دیگر ظاهر نمی شود. این متد هیچ آرگیومنتی نمی پذیرد.
enable
این اکشن مکانیزم autocompletion را مجددا فعالسازی می کند. لیست پیشنهادها نیز دوباره نمایش داده خواهند شد. . این متد هیچ آرگیومنتی نمی پذیرد.
option( optionName )
این اکشن مقدار تعیین شده برای پارامتر optionName را بازیابی می کند. این گزینه با یکی از گزینه های به کار برده شده در autocomplete مطابفت دارد.
option
این اکشن یک آبجکت حاوی جفت های key/value را دریافت می کند که گزینه های hash مربوط به autocomplete را نشان می دهد.
option( optionName, value )
این اکشن مقدار گزینه ی autocomplete را مربوط به optionName تعیین شده، تنظیم می کند. مبحث optionName نام گزینه ای است که باید تنظیم شود و value مقداری است که باید برای گزینه تنظیم شود.
option( options )
این اکشن یک یا چند گزینه را برای autocomplete تنظیم می کند. مبحث options نقشه ای است از جفت های option-value که قرار است تنظیم شوند.
search( [value ] )
این اکشن به دنبال نوعی سازگاری بین مقدار رشته و منبع داده است ( در options.source تعیین شده است). حداقل تعداد کارکترها باید به مقدار برسند، در غیر این صورت جستجو اجرا نمی شود.
widget
عنصر
- DOM را بازمی گرداند که با لیست پیشنهادها مطابقت دارد. این اکشن، آبجکتی است از گروه jQuery که امکان دسترسی آسان به لیست را بدون استفاده از انتخابگرهای jQuery فراهم می کند.
- جدید ایجاد می کند، آن را به منو ضمیمه کرده و بازمی گرداند.
_renderMenu(ul, items)
این متد ساخت منوی ویجت را کنترل می کند.
_resizeMenu()
این متد اندازه ی منو را قبل از نمایش داده شدن آن کنترل می کند. عنصر منو در menu.element موجود می باشد. این متد هیچ برهانی را نمی پذیرد.
مدیریت رویداد روی عنصر autocomplete :
علاوه بر متد autocomplete (options) که در بخشهای قبل مشاهده کردیم، JqueryUI متدهای دیگری ارائه می دهد که برای یک رویداد خاص اغاز می شوند. این متدها در زیر ارائه شده اند:
Event Method
Description
change(event, ui)
این رویداد زمانی آغاز می شود که مقدار عنصر براساس یک انتخاب تغییر می کند. در زمان آغاز، این رویداد همیشه پس از آغاز رویداد close اتفاق می افتد.
close(event, ui)
هر زمانی که منوی autocomplete بسته شود، این رویداد آغاز می شود.
create(event, ui)
وقتی autocomplete ایجاد می شود، این رویداد آغاز می شود.
focus(event, ui)
هرزمان که تمرکز بر روی یکی از انتخاب های منو باشد، این رویداد آغاز می شود. مقدار تمرکز بر روی تنظیم می شود، مگر اینکه کنسل شود ( به عنوان مثال با گزارش دادن false).
open(event, ui)
پس از اینکه داده آماده شده است و منو در آستانه ی باز شدن می باشد، این رویداد آغاز می شود.
response(event, ui)
پس از اینکه جستجو کامل شده و منو نمایش داده شود، این رویداد آغاز می شود. این رویداد همیشه با تکمیل شدن جستجو آغاز می شود، حتی اگر منو نمایش داده نشود، زیرا هیچ نتیجه ای وجود ندارد، یا Autocomplete غیرفعال شده است.
search(event, ui)
این رویداد پس از اینکه ضوابط delay و minLength اجرا شده اند، آغاز می شود، درست قبل از اینکه مکانیزم تعیین شده توسط منبع، فعال شود. اگر کنسل شود، عملکرد جستجو هم متوقف می شود.
select(event, ui)
این رویداد زمانی آغاز می شود که یک مقدار از منوی autocomplete انتخاب شده باشد. کنسل کردن این رویداد از تنظیم مقدار برای عنصر جلوگیری می کند ( اما از بسته شدن منو جلوگیری نمی کند.)
مثال:
مثال زیر استفاده از متد رویداد را در autocomplete widgets توضیح می دهد. این مثال استفاده از رویدادهای focus, و select را توضیح می دهد.
#project-label {
display: block;
font-weight: bold;
margin-bottom: 1em;
}
#project-icon {
float: left;
height: 32px;
width: 32px;
}
#project-description {
margin: 0;
padding: 0;
}
$(function () {
var projects = [
{
value: “java”,
label: “Java”,
desc: “write once run anywhere”,
},
{
value: “jquery-ui”,
label: “jQuery UI”,
desc: “the official user interface library for jQuery”,
},
{
value: “Bootstrap”,
label: “Twitter Bootstrap”,
desc: “popular front end frameworks “,
}
];
$(“#project”).autocomplete({
minLength: 0,
source: projects,
focus: function (event, ui) {
$(“#project”).val(ui.item.label);
return false;
},
select: function (event, ui) {
$(“#project”).val(ui.item.label);
$(“#project-id”).val(ui.item.value);
$(“#project-description”).html(ui.item.desc);
return false;
}
})
.data(“ui-autocomplete”)._renderItem = function (ul, item) {
return $(“
- “)
.append(“” + item.label + “
” + item.desc + ““).appendTo(ul);
};
});
Select a project (type “a” for a start):
مثال:
اکنون اجازه بدهید با استفاده از اکشن های بالا، مثالی را بررسی کنیم. مثال زیر استفاده از متد option( optionName, value ) را توضیح می دهد.
$(function () {
var availableTutorials = [
“ActionScript”,
“Boostrap”,
“C”,
“C++”,
“Ecommerce”,
“Jquery”,
“Groovy”,
“Java”,
“JavaScript”,
“Lua”,
“Perl”,
“Ruby”,
“Scala”,
“Swing”,
“XHTML”
];
$(“#automplete-6”).autocomplete({
source: availableTutorials
});
$(“#automplete-6”).autocomplete(“option”, “position”, { my: “right-10 top+10”, at: “right top” })
});
نکات گسترش:
autocomplete widget می تواند همانطور که با ساخته شد، گسترش یابد. وقتی ویجت ها را گسترش می دهید، قادرید که رفتارهایی را به متدهای موجود اضافه کرده و یا حذف کنید. جدول زیر متدهایی را ارائه می دهد که در نکات گسترش با همان ثبات API رفتار می کنند که متدهای پلاگین در بالا داشتند.
Method
Description
_renderItem( ul, item )
این متد ایجاد هر گزینه را در منوی ویجت کنترل می کند. این متد یک عنصر