jQuery UI全教程之一(dialog的使用教程)

jQuery UI目前的版本已经更新到了1.8.7。个人感觉和easyui相比起来,jQuery UI在界面的美观程度和可定制型更强一些。所以再次将一些jQuery UI组件的用法说明一下,方便日后查阅。也方面没接触jQuery UI的人能早日使用jQuery UI套件

(一)首先来说jQuery UI使用频率较高dialog组件:

dialog就是我们常说的弹出层,应用还是比较广泛的,比如:可以使用弹出层做登录、注册和消息提示等功能

下面来详细说说dialog的使用方法

在官方提供的官方文档和示例中有六种形式的dialog,但是前五种都是大同小异,包括在编写代码方面也仅仅是多设置两个属性而已,没什么太大的不同,先来看看使用jQuery UI组件的时候需要那些前期贮备工作。

首先将需要依赖的js文件导入到你的页面中。需要依赖的文件如下:

jquery-ui-1.8.7.custom.css这个是jQuery UI套件的CSS样式表,demos.css这个是jQuery UIdemo中用到的CSS样式,因为我用到了这些样式所以将它导入进来,如果大家不需要可以不导这个文件,jquery-1.4.4.min.js这个不用说了吧,jQuery的核心文件,没有它一切工作都无法开展。切记一点:一定要在引入其他的js文件之前引入jquery-1.4.4.min.js文件,别问为什么,懂点jQuery的人都能想的到。jquery-ui-1.8.7.custom.min.js这个是jQueryUI的核心js文件,也是必须的。有了上述的引用后就可以在你的页面中使用jQuery UI了。

先看一个超级简单的DEMO:

<div id="dialog" title="basic dialog"><p>这是一个采用默认样式的对话框</p></div>

在页面中加入上边的一行代码,然后加入一个script标签对,在脚本写如下代码:

$(function(){

       $("#dialog").dialog();

});

打开你的页面看一下吧,如果没什么意外你会看到一个类似这样的对话框

jQuery UI全教程之一(dialog的使用教程)
简单吧,这就是一个弹出层,其中div的title被当作了dialog的title,右上角有关闭的xx,右下角则可以拖拽改变大小

这就是一个默认的dialog,虽然我们没有为它指定高度和宽度,但是它有默认的值,在我们没有设定情况下dialog默认会弹出在屏幕的中央,大小也是有默认值的,可以改变大小,显示关闭按钮,这都是默认的样式,那么如果我们想自己定制一下dialog,不想让他这样显示该如何做?下面介绍一些属性和方法来改变一下这个dialog,用到的属性如下:

autoOpen,modal,buttons,根据这些属性我们来定制一个不会自动打开(当点击按钮或者通过其他的事件来触发弹出dialog的事件),并且带有遮罩(模式窗体)和按钮的dialog

buttons属性是一个复合属性,使用形式如下:buttons{ok:function(){点击按钮执行的事件},cancel:function(){点击按钮执行的事件}}

其中ok是按钮显示的文本,而function是点击按钮后执行的事件。注意,在ok和function之间有冒号:,虽然按钮可以为中文,比如:确定:function(){}这种形式,但是切记,在按钮文本和function之间的冒号一定是英文字符下的冒号,不要写成中文的全角冒号,否则会有错误。

将刚才的js脚本替换为:

$("#dialog-form").dialog({

        autoOpen:false,
        modal:true,

        buttons:{

               登录:function(){

                      alert("您点击了登录按钮");

              }

        }

})

//控制打开dialog的方法

function open_dialog(){

       $("#dialog-form").dialog("open");

}

这里的dialog将带有一个登录按钮。并且为带遮罩的模式窗体。默认不显示。所以我们需要在页面添加一个按钮,通过点击按钮来控制打开dialog

<input type="button" value="打开" οnclick="open_dialog();"/>

这样当点击这个按钮时会打开这个dialog.打开后的dialog如下图:

jQuery UI全教程之一(dialog的使用教程)

可能有的人会说为什么这个显示的颜色和样式都第一个不一样呢?

因为jQueryUI组件的皮肤都是可定制的,而不是一尘不变。可以根据需要选择自己喜欢的皮肤样式来使用,在jQueryUI的官方网站上有UI皮肤下载的,可以先预览皮肤的效果再下载,下载后只需要将当前项目中的CSS文件即可实现切换皮肤

那么在dialog中显示的username:   password:     和两个文本框又是从何而来的?

这是自己写的一个表单,用于让用户登录的表单,还记得吗?dialog是通过在页面中指定一个div,然后得到该div对象.dialog()就可以生成dialog了,同样的道理,我们可以在这个div中加入自己想要的表单域。这个就是我自己定制的登录表单。样式采用了UI提供的样式,当然,如果你觉得这个样式不好同样是可以自己定制自己的CSS来使用。完整的表单代码如下:

<!-- 登录区域表单信息 -->

    <div id="dialog-form" class="ui-widget ui-widget-content ui-corner-all" title="用户登录">

        <p id="login_tip"></p>

        <form id="login-form">

        <fieldset>

            username:<input type="text" name="name" id="name" class="text ui-widget-content ui-corner-all" />

            password:<input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />

        </fieldset>

        </form>

    </div>

大家可以看到每个input标签都有一个class属性,指定了3个class样式。这就是jQueryUI给我们提供的,不需要我们去写样式表文件。

更多的属性应用大家可以参考官方提供的文档,由于属性较多,不再一一介绍。都很简单,需要用到的时候查询一下即可

下面说说dialog中的事件调用。在上面的例子中dialog只有一个按钮,用于登录。如果我想添加另外一个按钮:关闭,当我点击关闭时关闭dialog该如何做呢?在jQueryUI中,多数组件的事件都使用如下的形式来调用:

$("#dialog").dialog("close");其中close就是事件的名称,这样当我点击这个按钮时就可以关闭该dialog了。如果要打开dialog也是同样的道理。$("#dialog").dialog("open");这个用于打开dialog。更多的方法请查阅文档,事件的功能不一样,但是用法基本一致:

都是$.dialog("事件名称");这种形式

下面我们以dialog为例,来实现一个实用dialog+form表单进行ajax注册的实例(只写前台实现,后台请根据自己所用的服务器端语言进行实现。)

首先看注册的dialog中都有什么内容。主页页面的dialog如下所示:

jQuery UI全教程之一(dialog的使用教程)

注册表单中有用户名、密码、email和用户的生日以及“提交”和“取消按钮”

功能描述:

当用户点击提交的时候首先进行客户端的验证,如果有不符合要求的则给与用户提示信息。提示信息会以醒目的方式显示在表单的最上方,不是alert()的方式。当验证通过后点击提交按钮发起ajax请求,将表单数据发送到后台处理,最终记录在数据库中,注册成功

先来看注册表单中div中的内容:

<div id="register-form" class="ui-widget ui-widget-content ui-corner-all" title="用户注册">

        <p class="validateTips">所有的表单域都为必填项.</p>

        <form id="reg-form">

        <fieldset>

            用户名:<input type="text" name="uname" id="uname" value="" class="text ui-widget-content ui-corner-all" />

            密码:<input type="password" name="upass" id="upass" value="" class="text ui-widget-content ui-corner-all" />

           email:<input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />

            生日:<input type="text" readonly="readonly" name="birth" id="birth" value="" class="text ui-widget-content ui-corner-all" />

        </fieldset>

        </form>

    </div>

上边的div中显示的就是注册表单的内容。一共四项,和大家看到的dialog中的是一致的

然后来看如何对这些数据进行验证,验证代码如下:

//注册表单相关函数和验证

//获取name,password,email和birth对象并将对象添加到一个空对象中备用

var uname = $("#uname"),

password = $("#upass"),

email = $("#email"),

birth = $("#birth"),

fields = $([]).add(uname).add(password).add(email),

tips = $(".validateTips");

$("#register-form").dialog({

//打开对话框的时候移除表单域的样式并设置错误信息显示文本为默认值

open:function(){

tips.removeClass().text("所有的表单域都为必填项.");

fields.removeClass("ui-state-error");

fields.val("");

},

modal:true,//弹出带有遮罩的模式窗体

autoOpen:false,//不自动打开

buttons:{

提交:function(){

//点击提交按钮时执行的事件

var chk = true;

//验证字段长度是否符合要求

chk = chk && checkLength(uname,"username",2,15);

chk = chk && checkLength(password,"password",6,20);

chk = chk && checkLength(email,"email",6,40);

chk = chk && checkLength(birth,"birthday",8,10);

//正则表达式验证用户名和email是否合法

chk = chk && checkReg(name,/^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z])|_\w*$/,"用户名必须以字母、下划线或者汉字开头,请修改后提交");

chk = chk && checkReg(email,/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,"请输入正确的email格式,格式如下:admin@yahoo.com");

在上边的验证中使用到了checkLength()方法和checkReg方法,这两个方法分别都是自定义方法,分别是验证字段长度和通过正则表达式验证输入是否合法的方法,在jQueryUI官方提供的Demo里也有相应的方法,我在这里对方法做修改,因为官方的DEMO中当验证失败后,重新打开DIALOG时,验证失败的提示信息和错误样式都还保存着。而我写的方法已经做了修改。不会有这样的问题,下面是checkLength和checkReg方法,方法的注释我写的很清楚了,不再解释,我会说下关于添加错误CSS样式的东西。

//判断字段长度是否符合要求的方法,四个参数分别为:o被检测的对象,msg被检测对象显示名称

//min允许的最小长度,max允许的最大长度

function checkLength(o,msg,min,max){

if(o.val().length > max || o.val().length < min){

o.addClass("ui-state-error");//为当前的错误域添加CSS样式

updateTip(msg+"的长度必须在"+min+"到"+max+"之间");//更新提示区域的信息

return false;

}else{

//如果验证通过则移除当前对象的CSS错误样式

o.removeClass("ui-state-error");

return true;

}

}

 

//通过正则表达式验证内容的方法,o为表单域对象,reg为正则表达式,n为错误提示信息

function checkReg(o,reg,n){

if(!reg.test(o.val())){

o.addClass("ui-state-error");

updateTip(n);

return false;

}else{

o.removeClass("ui-state-error");

return true;

}

}

在这两个方法中都用到了一个updateTip方法,该方法的作用就是给那个<p>标签也就是错误消息显示的地方添加一个css样式,用来高亮提示用户的。方法如下:

//更新提示信息的方法,传递的参数t为显示的错误信息,然后为显示信息的标签添加高亮

function updateTip(t){

tips.text(t).addClass("ui-state-highlight");

}

验证的过程就是如上面显示的那样,方法都有比较详细的注释,大家可以自己看

当用户输入的都被我们验证,并通过后,应该像后台发起ajax请求了。具体代码如下:

此处用到了一个formSerialize()方法,是一个jquery.form.js的脚本文件,针对表单的一个jq插件,可以序列化表单,这样我们只需要把序列化后的值传递给后台就行,不用一个个获取再拼接了。如果需要用到请自行引入该脚本

if(chk){

//验证通过后移除提示处的样式和错误消息

tips.removeClass().text("");

//序列化表单

var user = $("#reg-form").formSerialize();

//发起ajax请求

$.ajax({

type:'post',

url: '${path}/UserAction?method=register',

data:user,

success:function(msg){

if(msg == "success"){

$("#register-form").dialog("close");

}else{

alert("服务器异常,请稍后再试");

}

},

error:function(){

alert("ajax请求失败");

}

});

}

整个的注册流程就是这样,当注册完成后会关闭dialog,下面的图片显示当验证出现错误时的样式


jQuery UI全教程之一(dialog的使用教程)

转载于:https://www.cnblogs.com/goloving/p/6951206.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python使用redis做缓存_Python中的Redis客户端缓存(二)

Python部落(python.freelycode.com)组织翻译&#xff0c;禁止转载&#xff0c;欢迎转发。处理失效无效消息如何发送到被追踪的客户端取决于客户端正在使用的Redis序列化协议(RESP)。早期版本的Redis使用RESP2&#xff0c;但是它的后续版本RESP3已经存在于Redis 6中&#xff0c;…

c语言中有哪些函数关系,C语言中有哪些常用的函数

C语言中有哪些常用的函数发布时间&#xff1a;2020-11-17 17:01:32来源&#xff1a;亿速云阅读&#xff1a;107作者&#xff1a;小新这篇文章主要介绍C语言中有哪些常用的函数&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一定要…

akka es/cqrs_在Akka中实现主从/网格计算模式

akka es/cqrs主从模式是容错和并行计算的主要示例。 模式背后的想法是将工作划分为相同的子任务&#xff0c;然后将其委派给从属。 这些从属节点或实例将处理工作任务&#xff0c;并将结果发送回主节点。 然后主节点将编译从所有从节点接收到的结果。关键是从节点仅知道如何处理…

05 HTML字符串转换成jQuery对象、绑定数据到元素上

1 要求 将一段 HTML脚本 封装成一个字符串&#xff0c;将这个字符串转换成一个jQuery对象&#xff1b;然后将这个jQuery对象添加到指定的元素中去 2 步骤 定义字符串 var str <div id"box01">hello world</div>; //定义一个字符串 利用jQuery框架将字符…

python迭代器使用_Python迭代器的用法

我们在前面使用过语句“for x in列表对象”&#xff0c;这就表示列表对象是可迭代的(Iterable)。那么如何判断某个对象是否可迭代呢&#xff1f;答案是可以使用collections.Iterable类来判断。如下面的代码所示&#xff0c;列表是可迭代的&#xff0c;整数是不可迭代的&#xf…

c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...

佩尔方程讲解连接&#xff1a;若一个丢番图方程具有以下的形式&#xff1a;且为正整数&#xff0c;则称此方程为佩尔方程(英文&#xff1a;Pells equation 德文&#xff1a;Pellsche Gleichung) 若是完全平方数&#xff0c;则这个方程式只有解(实际上对任意的&#xff0c;都是解…

在Java EE 7中自动配置JMS资源

JMS 2.0&#xff08;Java EE 7平台的一部分&#xff09;引入了许多不错的功能 。 其中之一是能够声明JMS资源以进行自动部署。 Java EE 7之前的版本 使用Resource注入连接工厂 使用Resource查找目标位置&#xff08;队列/主题&#xff09; 拉出Session对象并使用它创建Messa…

python关键词提取源码_Python 结巴分词 关键词抽取分析

关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期&#xff0c;当时还不支持全文搜索的时候&#xff0c;关键词就可以作为搜索这篇论文的词语。因此&#xff0c;目前依然可以在论文中看到关键词这一项。除了这些&#xff0c;关键词…

安卓欢迎界面和activity之间的跳转问题

使用安卓的UI界面&#xff0c;就不得不了解activity&#xff0c;由于actvity就像是一个form表单一样&#xff0c;全部的UI都呈如今这里&#xff0c;他能够承载全部的UI控件。INtent就是一个中继站一样。他负责组件之间的沟通。以下我们来说一下一个actvity跳转到还有一个actvit…

C语言输出最后一个空格去掉,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

Android 9.0 开始&#xff0c;默认不允许明文传输&#xff0c;所以在建立网络连接时会使用 https 连接&#xff0c;同时进行安全认证。如果应用没有做对应处理&#xff0c;即会发生上述异常。解决方法有两种&#xff1a;一. 在应用里声明允许明文传输.1. 在应用的 res/xml 文件…

java 7.函数-递归_带有谓词的Java中的函数样式-第1部分

java 7.函数-递归您一直在听到将要席卷全球的函数式编程&#xff0c;而您仍然坚持使用普通Java&#xff1f; 不用担心&#xff0c;因为您已经可以在日常Java中添加一些功能样式。 此外&#xff0c;它很有趣&#xff0c;可以节省许多代码行并减少错误。 什么是谓词&#xff1f; …

大话oraclerac集群、高可用性、备份与恢复_数腾Oracle RAC数据库灾备解决方案

“一个系统包含很多模块&#xff0c;数据库、前端、缓存、搜索、消息队列等&#xff0c;每个模块都需要做到高可用&#xff0c;才能保证整个系统的高可用。”数据库作为现代信息社会的基石&#xff0c;几乎所有的计算机应用软件都构建于数据库系统之上&#xff0c;对于数据库而…

Python学习笔记(随机数)

random模块的作用是产生随机数。 import random num random.randint(1,100) random.randint(a, b)可以生成一个a到b间的随机整数&#xff0c;包括a和b。 a、b都必须是整数&#xff0c;且必须b≥a。当等于的时候&#xff0c;比如&#xff1a; random.randint(3, 3) 的结果就永远…

android.mk 比较字变量,粉丝投稿 | 谈谈Android.mk

原标题&#xff1a;粉丝投稿 | 谈谈Android.mk本文由公号【你看上去真美】(微信号&#xff1a;tmac_lover)粉丝投稿&#xff0c;目前工作是Android系统rom定制开发&#xff0c;有同行可以关注一下。1. 为什么是Android.mk不知道有没有人想过&#xff0c;Android源码里为什么每个…

guava API整理

1&#xff0c;大纲 让我们来熟悉瓜娃&#xff0c;并体验下它的一些API,分成如下几个部分&#xff1a; IntroductionGuava Collection APIGuava Basic UtilitiesIO APICache API2&#xff0c;为神马选择瓜娃&#xff1f; 瓜娃是java API蛋糕上的冰激凌&#xff08;精华&#xff…

python水印 resized_如何改进Python中的水印图像?

我正在使用python为来自this的水印图像源代码import Imageimport ImageEnhanceimport randomdef _percent(var):"""Just a simple interface to the _val function with a more meaningful name."""return _val(var, True)def _int(var):"&…

智能包装结构,提高可测性

有很多方法可以将整个应用程序分为多个包。 我们可以在许多编程博客和论坛上找到有关按功能或按层打包的优缺点的讨论。 我想从可测试性开始讨论这个主题&#xff0c;看看它是否会带来任何有意义的结果。 首先&#xff0c;让我们尝试描述我们通常希望跨不同层在应用程序中进行…

Android面试题Service,Android面试题-IntentService源码分析

自定义控件联网工具数据库源码分析相关面试题Activity相关面试题Service相关面试题与XMPP相关面试题与性能优化相关面试题与登录相关面试题与开发相关面试题与人事相关面试题人事面试宝典IntentService是继承于Service并处理异步请求的一个类&#xff0c;在IntentService内有一…

OpenGL中的Shader

http://blog.csdn.net/huangcanjun187/article/details/52474365 学习总结自&#xff1a;http://learnopengl.com/#!Getting-started/Hello-Triangle http://learnopengl.com/#!Getting-started/Shaders 继上篇文章中提到&#xff0c;OpenGL是为了在GPU上同时跑成千上万个程序&…