ایجاد alert,confirm,prompt هایی متفاوت با jQuery Impromptu
نویسنده: احمد احمدی
تاریخ: ۱۳۹۱/۰۶/۱۸ ۱۸:۴۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
حال مواقعی پیش میآید که نیاز داریم پیغام هایی با گرافیک و عبارات متفاوت نمایش دهیم . برای رفع این نیاز میتوانیم از پلاگین jQuery Impromptu استفاده کنیم . البته این پلاگین قابلیتهای دیگری هم دارد که در این مقاله با آنها آشنا میشویم .
از ویژگیهای این پلاگین میتوان حجم کم (حدود 11 کیلوبایت) و قدرت شخصی سازی بالا اشاره کرد .
طرز استفاده به این شکل است :
$.prompt( msg , options )
msg میتواند یک string یا یک شئ از states باشد . string ارسال شده میتواند شامل کدهای html باشد .
یک شئ states هم شامل مجموعه ای از وضعیتهای prompt است . برای مثال میتوان یک prompt ایجاد کرد که مثل یک Wizard شامل چند مرحله باشد .
options هم تنظیماتی است که میتوان مشخص کرد . تنظیماتی مثل : prefix,classes,persistent,timeout,...
msg :
گفتیم شئ states شامل وضعیتهای مختلف prompt است . هر وضعیت ( state ) میتواند شامل بخشهای زیر باشد :
function(event, value, message, formVals){}
position: { container: '#container', x: 0, y: 0, width: 0, arrow: 'lm' }
var tourSubmitFunc = function (e, v, m, f) {
if (v === -1) {
$.prompt.prevState();
return false;
} else if (v === 1) {
$.prompt.nextState();
return false;
}
};
var states =
{
state0:
{
html: "State1",
buttons: { Next: 1 },
//position: { container: '#container', x: 10, y: 0, width: 350, arrow: 'lm' },
submit: tourSubmitFunc
},
state1:
{
html: "State2",
buttons: { Prev: -1, Next: 1 },
submit: tourSubmitFunc
},
state2:
{
html: "State3",
buttons: { Prev: -1, Done: 0 },
submit: tourSubmitFunc
}
};
$.prompt(states);
تا به اینجا با پارامتر اول prompt آشنا شدیم و فهمیدیم که میتوانیم یک رشته یا یک شئ states به عنوان message به prompt ارسال کنیم .
options :
اکنون با optionهای prompt ( پارامتر دوم ) آشنا خواهیم شد .
توجه کنید که زمانی که یک رشته به prompt ارسال کنید ، مقادیر buttons,focus,submit از این تنظیمات دریافت میشود .
به عبارت دیگر ، زمانی که یک شئ states به prompt ارسال کنید ، از مقادیر فوق که در تنظیمات است ، استفاده نمیشود .
$.prompt("Message",
{
loaded: function() {
alert("Prompt Loaded !");
}
});
function(event){}
function(event, fromStateName, toStateName){}
function(event, toStateName){}
function(event[, value, message, formVals]){}
{ Ok : true }
[
{title: 'Hello World',value:true},
{title: 'Good Bye',value:false}
]
var myPrompt = $.prompt( msg , options );
myPrompt.bind('promptloaded', function(e){});
jQuery.prompt.setDefaults({
prefix: 'myPrompt',
show: 'slideDown'
});
jQuery.prompt.setStateDefaults({
buttons: { Ok:true, Cancel:false },
focus: 1
});
$.prompt("یک پیام تستی",
{
prefix: 'dnt',
buttons: { 'تایید': true }
});
$.prompt("درخواست تایید - موافقید ؟",
{
prefix: 'dnt',
buttons: { 'تایید': true, 'انصراف': false }
});
<div class="prompt-content" style="display: none;">
<span>نام خود را وارد نمایید : </span>
<span>
<input type="text" name="name" />
</span>
</div>
$.prompt(
$(".prompt-content").html(),
{
prefix: 'dnt',
buttons: { 'تایید': true, 'انصراف': false }
});
div.dnt .dntmessage {
color: #444444;
line-height: 20px;
padding: 10px;
/* Edited */
direction:rtl;
text-align:right;
}
/* Start : DotNetTips Theme */
.dntfade {
background-color: #AAAAAA;
position: absolute;
}
div.dnt {
background-color: #FFFFFF;
border-radius: 10px 10px 10px 10px;
border: 1px solid #FFFFFF;
box-shadow: 0px 0px 10px 1px #6D6D6C;
font-family: tahoma;
font-size: 11px;
padding: 7px;
position: absolute;
text-align: left;
width: 400px;
}
div.dnt .dntcontainer {
font-size: small;
}
div.dnt .dntclose {
color: #BBBBBB;
cursor: pointer;
font-weight: bold;
position: absolute;
top: 4px;
width: 18px;
}
div.dnt .dntmessage {
color: #444444;
line-height: 20px;
padding: 10px;
}
div.dnt .dntbuttons {
background-color: #F4F4F4;
border: 1px solid #EEEEEE;
padding: 5px 0px;
text-align: right;
}
div.dnt button {
background-color: #2F6073;
border: 1px solid #F4F4F4;
color: #FFFFFF;
font-size: 12px;
font-weight: bold;
margin: 0px 10px;
padding: 3px 10px;
}
div.dnt button:hover {
background-color: #728A8C;
}
div.dnt button.dntdefaultbutton {
background-color: #0099CC;
}
.dnt_state {
direction: rtl;
text-align: right;
}
.dnt_state button {
font-family: tahoma;
}
.dntwarning .dnt .dntbuttons {
background-color: #CCDDFF;
}
.dnt .dntarrow {
border: 10px solid transparent;
font-size: 0px;
height: 0px;
line-height: 0;
position: absolute;
width: 0px;
}
.dnt .dntarrowtl {
border-bottom-color: #FFFFFF;
left: 10px;
top: -20px;
}
.dnt .dntarrowtc {
border-bottom-color: #FFFFFF;
left: 50%;
margin-left: -10px;
top: -20px;
}
.dnt .dntarrowtr {
border-bottom-color: #FFFFFF;
right: 10px;
top: -20px;
}
.dnt .dntarrowbl {
border-top-color: #FFFFFF;
bottom: -20px;
left: 10px;
}
.dnt .dntarrowbc {
border-top-color: #FFFFFF;
bottom: -20px;
left: 50%;
margin-left: -10px;
}
.dnt .dntarrowbr {
border-top-color: #FFFFFF;
bottom: -20px;
right: 10px;
}
.dnt .dntarrowlt {
border-right-color: #FFFFFF;
left: -20px;
top: 10px;
}
.dnt .dntarrowlm {
border-right-color: #FFFFFF;
left: -20px;
margin-top: -10px;
top: 50%;
}
.dnt .dntarrowlb {
border-right-color: #FFFFFF;
bottom: 10px;
left: -20px;
}
.dnt .dntarrowrt {
border-left-color: #FFFFFF;
right: -20px;
top: 10px;
}
.dnt .dntarrowrm {
border-left-color: #FFFFFF;
margin-top: -10px;
right: -20px;
top: 50%;
}
.dnt .dntarrowrb {
border-left-color: #FFFFFF;
bottom: 10px;
right: -20px;
}
/* End : DotNetTips Theme */
return confirm('')
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title></title>
<link href="jquery-impromptu.css" media="all" rel="stylesheet" type="text/css" />
<script src="jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="jquery-impromptu.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$show.click(function(e){
$.prompt("Hello World!");
});
});
});
</script>
</head>
<body>
<button class="show">ShowPrompt</button>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" media="all" type="text/css" href="http://trentrichardson.com/Impromptu/jquery-impromptu.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="http://trentrichardson.com/Impromptu/jquery-impromptu.js"></script>
</head>
<body>
<button class="show">ShowPrompt</button>
<script type="text/javascript">
$(function(){
$(".show").click(function(e){
$.prompt("Hello World!");
});
});
</script>
</body>
</html>var myval = m.find('#name').val();
alert(myval); function(event, value, message, formVals){}<div class="prompt-content" style="display: none;">
<span>ایمیل خود را وارد نمایید : </span>
<span>
<input type="text" name="user_email" />
</span>
</div>$.prompt(
$(".prompt-content").html(),
{
submit: function (e, v, m, f) {
var userEmail = f["user_email"];
console.log(userEmail);
}
});function deleteFile(location, filename)//حذف فیزیکی و منطقی فایل
{
$.prompt("آیا برای حذف فایل موجود اطمینان دارید ؟", {
title: '<img src="Images/warning.png" />',
buttons: { "بله": true, "خیر": false },
focus: 2,
submit: function (e, v, m, f) {
if (v == true) {
var getdate = new Date(); //Used to prevent caching during ajax call
if (xmlhttp) {
$("p#vtip").fadeOut("slow").remove(); //محو شدن tooltip
var id = document.getElementById("id").value;
var i = '3';
params = "id=" + id + "&i=" + i + "&filename=" + filename + "&location=" + location;
xmlhttp.open("POST", "FetchData/dbSearchDocument1.php", true);
xmlhttp.onreadystatechange = handleServerResponse4;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(params);
}
}
else {
}
}
});
}
//-----------------------------------------------------------------------
function handleServerResponse4() {
if ((xmlhttp.readyState == 1) || (xmlhttp.readyState == 2) || (xmlhttp.readyState == 3))//loading
{
document.getElementById("content").innerHTML = "<img src='Images/bigloading.gif'/>";
}
else if (xmlhttp.readyState == 4) //ready
{
if (xmlhttp.status == 200) {
if (xmlhttp.responseText == 1) {
$.prompt(". حذف فایل با موفقیت انجام شد ", {
title: '<img src="Images/warning3.png" />',
buttons: { "بستن": true }
});
}
else {
$.prompt("! حذف فایل با خطا مواجه شده است", {
title: '<img src="Images/warning2.png" />',
buttons: { "بستن": true }
});
}
}
else {
alert("Error during AJAX call. Please try again");
}
}
}
//-----------------------------------------------------------------------using System.Web.Mvc;
namespace jQueryImpromptu.Controllers
{
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(string postId, string filename)
{
return Content("ok");
}
}
}@{
ViewBag.Title = "Index";
var postUrl = Url.Action(actionName: "Index", controllerName: "Home");
}
<h2>
Index</h2>
<input type="button" id="btnDelete" value="delete" />
<div id="infoDiv">
Some Info ....
</div>
@section JavaScript
{
<script type="text/javascript">
$(function () {
$('#btnDelete').click(function () {
$.prompt("آیا برای حذف اطلاعات موجود اطمینان دارید ؟",
{
title: 'Title',
buttons: { "بله": true, "خیر": false },
focus: 2,
submit: function (e, v, m, f) {
//debugger;
if (!v) {
return;
}
var postId = 10;
var fileName = "test.jpg"
$.ajax({
type: "POST",
url: '@postUrl',
data: JSON.stringify({ postId: postId, fileName: fileName }),
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function (xhr, status) {
var data = xhr.responseText;
if (status === 'error' || !data || data == "nok") {
$.prompt("! حذف فایل با خطا مواجه شده است",
{
title: 'Title',
buttons: { "بستن": true }
});
}
else {
$("#infoDiv").fadeOut("slow").remove();
}
}
});
}
});
});
});
</script>
}var postId = 10; var fileName = "test.jpg"
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.IsRead)
</td>
<td>
@Html.ActionLink("حذف پیام", MVC.User.ActionNames.DeleteMessageSend, MVC.User.Name, new{ id=item.Id }, new { @class="btn btn-danger" })
</td>
</tr>
} function mycallbackfunc(v,m){
$.prompt('i clicked ' + v);
}
$.prompt('Example 8',{ callback: mycallbackfunc });
});