1、入门篇



首先看看怎么安装该插件。跟其他jquery插件一样,首先肯定是要先引入jquery。



<script type="text/javascript" src="js/jquery-1.7.2.js"></script> 
 
 
 

   然后引入插件的js。 
 
 
 

   <script type="text/javascript" src="js/jquery-impromptu.4.0.js"></script> 
 
 
 

   因为这个插件的弹窗,是自带样式的,所以还要引入 样式 。 
 
 
 

    <style type="text/css"> 
  
 
  

    /*-------------impromptu---------- */ 
  
 
  

    .jqifade{ position: absolute; background-color: #aaaaaa; } 
  
 
  

    div.jqi{ width: 400px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; position: absolute; background-color: #ffffff; font-size: 11px; text-align: left; border: solid 1px #eeeeee; -moz-border-radius: 10px; -webkit-border-radius: 10px; padding: 7px; } 
  
 
  

    div.jqi .jqicontainer{ font-weight: bold; } 
  
 
  

    div.jqi .jqiclose{ position: absolute; top: 4px; right: -2px; width: 18px; cursor: default; color: #bbbbbb; font-weight: bold; } 
  
 
  

    div.jqi .jqimessage{ padding: 10px; line-height: 20px; color: #444444; } 
  
 
  

    div.jqi .jqibuttons{ text-align: right; padding: 5px 0 5px 0; border: solid 1px #eeeeee; background-color: #f4f4f4; } 
  
 
  

    div.jqi button{ padding: 3px 10px; margin: 0 10px; background-color: #2F6073; border: solid 1px #f4f4f4; color: #ffffff; font-weight: bold; font-size: 12px; } 
  
 
  

    div.jqi button:hover{ background-color: #728A8C; } 
  
 
  

    div.jqi button.jqidefaultbutton{ background-color: #BF5E26; } 
  
 
  

    .jqiwarning .jqi .jqibuttons{ background-color: #BF5E26; } 
  
 
  

    /*-------------------------------- */ 
  
 
  

    </style> 
  
 
 

   最后就是调用,很简单: 
 
 
 

   $.prompt('hello');


效果:






 



2、基本篇



插件的调用方法,可以传递2个参数:



$.prompt('hello ',{ ...} });



第一个就是弹窗里面要显示的内容,第二个就是弹窗的一些属性或者说是配置,是一个json,或者说是一个js对象吧,其实一般jquery插件都有默认的设置,如果不需要可以空着不穿。



先看看代码:



var txt = 'Please enter your name:<br /> 
  
 
  

    <input type="text" id="alertName"  
  
 
  

    name="alertName" value="name here" />'; 
  
 
 

    function callbackfunc(e,v,m,f){ 
  
 
  

        if(v != undefined) 
  
 
 

   alert(v +' ' + f.alertName); 
 
 
 

    } 
  
 
  

    $(function(){ 
  
 
  

    $.prompt(txt,{ 
  
 
  

    buttons: {Hello:"Hello",Hi:"Hi"}, 
  
 
  

    opacity: 0.1, 
  
 
  

    focus: 0, 
  
 
  

    show:'slideDown', 
  
 
  

    callback: callbackfunc 
  
 
  

    }); 
  
 
  

    }); 
  
 
  

    来看看调用的参数吧。 
  
 
  

    首先是hello,这是弹窗里面显示的内容。 
  
 
  

    然后就是配置。 
  
 
  

    buttons: {Hello:"Hello",Hi:"Hi"},就是按钮,两个按钮,一个显示OK,一个显示CANCL,双引号里面的就是按钮的值,一般传给回调函数。 
  
 
  

    opacity: 0.1,这个是后面遮掩层的透明度,0.1是浅色的,0.9是深色的。 
  
 
  

    focus: 0,是默认焦点在那个按钮上面,从0开始。 
  
 
  

    show:'slideDown',就是弹出窗的弹出形式,这里是下拉窗的形式。 
  
 
  

    callback: callbackfunc,这个就是回调函数。 
  
 
  

    回调函数定义为: 
  
 
 

     function callbackfunc(e,v,m,f){ 
   
 
   

         if(v != undefined) 
   
 
  

    alert(v +' ' + f.alertName); 
  
 
  

    } 
  
 
 

   其中v就是按下的按钮,m是弹出内容的jquery对象,f是所提交的表单。 
 
 
 

     进阶篇 
   
 
   

     a、按确定之后检查弹窗内容,确定是否关闭弹出,并且操作弹窗内容 
   
 
   

     将基本篇的回调函数改成 
   
 
   

      function  callbackfunc(e,v,m,f){ 
    
 
    

          an = m.children('#alertName'); 
    
 
    

          if(f.alertName == ""){ 
    
 
    
 
         an.css("border","solid #ff0000 1px"); 
    
 
    
 
         return false; 
    
 
    

          } 
    
 
    

          return true; 
    
 
    

      } 
    
 
    

      按下按钮之后,如果f.alertName == ""(就是表单中的alertName为空),则an.css("border","solid #ff0000 1px")(操作m--弹窗内容中的表单,把其变成红色),最后return false,取消表单关闭。 
    
 
    

      b、让弹窗显示中文 
    
 
    

       $.prompt('Hello World!!',{ 
     
 
     

           buttons:[ 
     
 
     

       {title: '确定',value:true}, 
     
 
     

       {title: '取消',value:false} 
     
 
     

           ],  
     
 
     

           submit: function(e,v,m,f){ alert(v); }  
     
 
     

       }); 
     
 
    

      按之前的写法,button只能显示英文,改成这样就能显示中文了。 
    
 
    

      c、弹窗states,弹窗状态切换 
    
 
    

       var statesdemo = { 
     
 
     

       state0: { 
     
 
     

       html:'test 1.<br />test 1..<br />test 1...', 
     
 
     

       buttons: { Cancel: false, Next: true }, 
     
 
     

       focus: 1, 
     
 
     

       submit:function(e,v,m,f){  
     
 
     

       if(!v) return true; 
     
 
     

       else 
     
 
     

       $.prompt.goToState('state1'); 
     
 
     

       return false;  
     
 
     

       } 
     
 
     

       }, 
     
 
     

       state1: { 
     
 
     

       html:'test 2', 
     
 
     

       buttons: { Back: -1, Exit: 0 }, 
     
 
     

       focus: 1, 
     
 
     

       submit:function(e,v,m,f){ 
     
 
     

       else if(v=-1) 
     
 if(v==0) $.prompt.close() 
     

       $.prompt.goToState('state0'); 
     
 
     

       return false; 
     
 
     

       } 
     
 
     

       } 
     
 
     

       }; 
     
 
     

       $.prompt(statesdemo); 
     
 
    

      这里跟前面的例子有点不一样,传入了1个js对象,state0是第一个显示的state,然后可以跳到第二个state。 
    
 
    

      效果: 
    
 
    
 
      
    
 
     
    

      点击Next会进入下一个state,这里关键代码是$.prompt.goToState('state0'),跳到指定的state。但是,记得在后面return false取消弹窗的消失。 
    
 
    

      d、第一次访问时的功能导航: 
    
 
    

       var tourSubmitFunc = function(e,v,m,f){ 
     
 
     

       if(v === -1){ 
     
 
     

       $.prompt.prevState(); 
     
 
     

       return false; 
     
 
     

       } 
     
 
     

       else if(v === 1){ 
     
 
     

       $.prompt.nextState(); 
     
 
     

       return false; 
     
 
     

       } 
     
 
     

       }, 
     
 
     

       tourStates = [ 
     
 
     

       { 
     
 
     

       html: 'Welcome to jQuery Impromptu, lets take a quick tour of the plugin.', 
     
 
     

       buttons: { Next: 1 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#header', x: 10, y: 45, width: 200, arrow: 'tl' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       }, 
     
 
     

       { 
     
 
     

       html: 'When you get ready to use Impromptu, you can get it here.', 
     
 
     

       buttons: { Prev: -1, Next: 1 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#downloadHeader', x: 170, y: -10, width: 300, arrow: 'lt' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       }, 
     
 
     

       { 
     
 
     

       html: "You will also need this CSS", 
     
 
     

       buttons: { Prev: -1, Next: 1 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#cssHeader', x: 40, y: -100, width: 250, arrow: 'bl' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       }, 
     
 
     

       { 
     
 
     

       html: 'A description of the options are under the Docs section.', 
     
 
     

       buttons: { Prev: -1, Next: 1 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#docsHeader', x: 115, y: -85, width: 200, arrow: 'lb' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       }, 
     
 
     

       { 
     
 
     

       html: 'You will find plenty of examples to get you going.. including this tour..', 
     
 
     

       buttons: { Prev: -1, Next: 1 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#examplesHeader', x: -300, y: -45, width: 250, arrow: 'rm' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       }, 
     
 
     

       { 
     
 
     

       html: 'Yep, see, creating a tour is easy.. Here is the source:', 
     
 
     

       buttons: { Prev: -1, Next: 1 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#tourExample', x: -340, y: 5, width: 300, arrow: 'rt' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       }, 
     
 
     

       { 
     
 
     

       html: 'This concludes our tour. If you found Impromptu helpful, please see the links to the left, if not, thanks for stopping by!', 
     
 
     

       buttons: { Done: 2 }, 
     
 
     

       focus: 1, 
     
 
     

       position: { container: '#donationHeader', x: 420, y: 0, width: 300, arrow: 'lm' }, 
     
 
     

       submit: tourSubmitFunc 
     
 
     

       } 
     
 
     

       ]; 
     
 
     

       $.prompt(tourStates, { opacity: 0.3 });



其实这个是state的变体,给states加上position属性。用$.prompt.prevState()和$.prompt.nextState()来在states间跳转。