ایجاد اعتبارسنجی با استفاده از BootStrap و jQuery Tooltip
چهارشنبه 6 مرداد 1395در این مقاله شما درباره jQuery Tooltip Validation با استفاده از BootStrap مطالبی را خواهید اموخت . شاید به این مشکل بر خورده باشید که با نمایش پیغام شما در یک فرم ، صفحه بندی شما کاملا به هم بریزد ، ما در این مقاله سعی در برطرف نمودن این مشکل با استفاده از tooltip ها را داریم .
در حالت کلی ما از jQuery unobtrusive validation Plugin ها در برنامه های ASP.Net MVC استفاده می کنیم .
ما در این مقاله در مورد مطالب زیر مطالبی را خواهیم آموخت :
1.معایب jQuery Validation در MVC .
2. jQuery tooltip validation .
برخی معایب در استفاده از این Plugin وجود دارد . در زمان استفاده از این plugin ، یک تگ span را برای نمایش پیام خطا (Error Messages) ایجاد می کند .اگر شما ، برای مثال ، یک فرم افقی بالای کنترلر ها دارید ، ممکن است که آن درست کار نکند ، تا زمانی که از page layout رد شوند . برای همین تصمیم بر آن شد تا تغییراتی را در کتابخانه jQuery Validation ایجاد کنیم تا بجای استفاده از span در نشان دادن Error Message ها از Tooltip استفاده کند . که به شما چگونگی این کار را نشان خواهیم داد .
به کمک BootStrap از tooltip استفاده کنید .
قبل از این که به سراغ tooltip ها برویم ، نگاهی به روش قدیمی آن می اندازیم ، که در زیر آن را می بینیم .
زمانی که روی دکمه Register کلیک میکنیم ، همانطور که در شکل زیر مشاهده میکنید ، پیامی نمایش داده میشود .
اگر من طول پیام را زیاد کنم ، اتفاق بالا رخ می دهد و قسمت بندی صفحه به هم میخورد . در نتیجه این یکی از دلایلی است که استفاده از default behavior of the jQuery validation plugin را بد میکند . ما tooltip را با Error type عوض میکنیم به این دلیل که ما نمیخواهیم صفحه بندی ما به هم بخورد .
از این جا به بعد تازه مقاله jQuery tooltip validation شروع می شود .
مرحله اول :
1.یک پروژه ASP.Net MVC بسازید .
2.فایل های زیر را به برنامه اضافه کنید .
3. HomeController.cs. را بسازید .
Right click->Controllers folder->Add->Controller->name it as HomeController.cs.
4.متد Index را به Controller اضافه کنید .
5. view را به متد View اضافه کنید .
Right click->Index Method->Add View->click OK.
Index View ساخته شد .
6. حالا کدهای زیر را در فایل Index.cshtml قرار دهید .
<!DOCTYPE html> <html> <head> <title>Bootstrap tooltip Example</title> <!-----------------resource files-------------> <link href="~/Content/bootstrap.min.css" rel="stylesheet" /> <script src="~/Scripts/jquery-1.9.1.min.js"></script> <script src="~/Scripts/bootstrap.min.js"></script> <script src="~/Scripts/jquery.validate.min.js"></script> <script src="~/Scripts/jquery-validate.bootstrap-tooltip.min.js"></script> <script src="~/Scripts/myscript.js"></script> <style type="text/css"> .tooltip{ margin-left:100px; } .tooltip-inner { background: #ff3333; /*tooltip text background color*/ border-radius: 0px; font-weight: bolder; box-shadow: 1px 1px 1px 1px black; } .tooltip.top .tooltip-arrow { border-top-color: red; margin-left: -55px; } input[type="text"],input[type="password"],input[type="number"],input[type="email"], #CountryDropdownlst { box-shadow: 1px 1px 1px 1px grey; width: 200px; } #CountryDropdownlst{ height:27px; } /*.tooltip-inner tooltip-arrow { margin-left: 200px; }*/ </style> </head> <body> <div id="main"> @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { name = "RegistrationForm", id = "RegistrationForm" })) { <fieldset style="padding-left: 100px; box-shadow: 2px 2px 2px 2px #000;margin-top:30px;height:500px;"> <legend style="font-size:larger;font-weight:bold;">ثبت نام</legend> <div id="left-part" align="left" style="float:left;margin-left:20px;"> @Html.Label("نام", new { required = "required" })<br /> @Html.TextBox("FirstName")<br /><br /> @Html.Label("نام خانوادگی")<br /> @Html.TextBox("LastName")<br /><br /> @Html.Label("نام کاربری")<br /> @Html.TextBox("UserName")<br /><br /> @Html.Label("جنسیت")<br /> @Html.RadioButton("Gender", "Male", false, new { id = "rbnMale", name = "rbnMale" })مذکر @Html.RadioButton("Gender", "Female", false, new { id = "rbnFemale", name = "rbnFemale" })مونث <br /><br /> @Html.Label("ایمیل:") <br /> @Html.TextBox("Email", null, new { type = "email" })<br /><br /> </div> <div id="right-side" style="margin-left:400px;"> @Html.Label("رمز")<br /> @Html.Password("Password")<br /><br /> @Html.Label("تکرار رمز")<br /> @Html.Password("ConfirmPassword")<br /><br /> @Html.Label("شماره موبایل")<br /> @Html.TextBox("MobileNo", null, new { type = "number" })<br /><br /> @Html.Label("شهر")<br /> @Html.TextBox("State")<br /><br /> @Html.Label("کشور")<br /> @Html.DropDownList("CountryDropdownlst", new List<SelectListItem>() { new SelectListItem(){Text="ایران",Value="0"}, new SelectListItem(){Text="چین",Value="1"}, new SelectListItem(){Text="آمریکا",Value="2"}, new SelectListItem(){Text="روسیه",Value="3"} }, "--انتخاب--", new { id = "CountryDropdownlst" }) <br /><br /> <input type="submit" value="ثبت" id="btnSubmit" name="btnSubmit" class="btn btn-primary"/> </div> </fieldset> } <br /> </div> </body> </html>
مرحله دوم :
1. myscript.js را به پوشه script اضافه کنید .
myscript.js
//if no errors form will be submited $.validator.setDefaults({ submitHandler: function () { alert("form submited!"); } }); debugger; $(document).ready(function () { $("#RegistrationForm").validate({ rules: { FirstName: { required: true, minlength: 4, maxlength: 15 }, LastName: { required: true, minlength: 4, maxlength: 15 }, UserName: { required: true, minlength: 5 }, Gender: { required: true }, Email: { required: true, email: true }, Password: { required: true, minlength: 5, maxlength: 20 }, ConfirmPassword:{ required: true, equalTo:"#Password" }, MobileNo: { required: true, number: true, minlength: 10, maxlength:12 }, State: { required: true ,minlength:5}, CountryDropdownlst: { required:true } }, messages: { Gender: "لطفا جنسیت خود را مشخص کنید!", FirstName: { required: "نام اجباری است ", minlength: "حداقل 4 کاراکتر باید وارد کنید ", maxlength:"حداکثر 15 کاراکتر مجاز است" }, LastName: { required: "نام خانوادگی اجباری است ", minlength: "حداقل 4 کاراکتر باید وارد کنید", maxlength: "حداکثر 15 کاراکتر مجاز است" }, UserName: { required: "نام کاربری اجباری است", minlength: "حداقل 4 کاراکتر باید وارد کنید" }, Password: { required: "رمز اجباری است", minlength: "حداقل 4 کاراکتر باید وارد کنید" }, ConfirmPassword: { required: "پسورد را تایید کنید", equalTo:"پسورد همخوانی ندارد " }, MobileNo: { required: "لطفا شماره موبایل خود را وارد کنید ", minlength: "شماره معتبر وارد نید " }, State:"استان خود را وارد کنید ", CountryDropdownlst:"کشور خود را انتخاب کنید " }, //tooltip options to change position of tooltip.. tooltip_options: { FirstName: { trigger: 'focus' }, Gender: { placement: 'top', html: true } //placement:'bottom'for bottom }, //submitHandler: function (form) { // $("#validity_label").html('<div class="alert alert-success">No errors. Like a boss.</div>'); //}, invalidHandler: function (form, validator) { $("#validity_label").html('<div class="alert alert-error">There be ' + validator.numberOfInvalids() + ' error' + (validator.numberOfInvalids() > 1 ? 's' : '') + ' here. OH NOES!!!!!</div>'); } }); });
مرحله سوم :
Style را برای نمایش دادن error اضافه کنید .
.tooltip{ margin-left:100px; } .tooltip-inner { background: #ff3333; /*tooltip text background color*/ border-radius: 0px; font-weight: bolder; box-shadow: 1px 1px 1px 1px black; } .tooltip.top .tooltip-arrow { border-top-color: red; margin-left: -55px; } input[type="text"],input[type="password"],input[type="number"],input[type="email"], #CountryDropdownlst { box-shadow: 1px 1px 1px 1px grey; width: 200px; } #CountryDropdownlst{ height:27px; } /*.tooltip-inner tooltip-arrow { margin-left: 200px; }*/
حالا برنامه را دوباره اجرا کنید ، خروجی زیر را خواهیم داشت .
بدون اضافه کردن چیزی در فیلد ها ، دکمه ثبت را میزنیم ، خواهیم دید که :
در بالا دیدیم که افزایش طول Error دیگر تاثیری در صفحه بندی ما نخواهد داشت ، و با اضافه شدن طول erro طول tooltip ما افزایش خواهد یافت .
- Jquery
- 3k بازدید
- 3 تشکر