`

jQuery+js监听的问题心得

阅读更多

$(document).ready(function() {
//处理表单输入框的聚焦和无焦时CSS样式
$('form :text,form :password').focus(function() {
$(this).addClass('focus_input');
}).blur(function() {
$(this).removeClass('focus_input');
})
//为非异步请求的输入框添加离开焦点时的验证事件
$('form :input:not(#username,#nickname)').blur(function(event){
checkInfo(event);
});
//为需要异步请求的输入框(用户名和昵称)添加在修改内容后离开焦点时的验证事件
$('#username,#nickname').change(function () {
$(this).one('blur',function(event) {
checkInfo(event);
})
});
});

function checkInfo(event) {
alert('ok');
var resultMessage = '';
var $target = event.target;

switch ($target.id) {
case 'username':
checkUsername();
break;
case 'nickname':
checkNickname();
break;
case 'pwd2':
checkPwd();
break;
case 'realname':
checkRealname();
break;
}
//检查用户名
function checkUsername() {
var regUsername = new RegExp(/^[a-zA-Z0-9][\w-]{3,17}$/g);
if(!regUsername.test($target.value)) {
if ($target.value == '') {
resultMessage = '用户名不能为空';
}
else if ($target.value.length < 4 || $target.value.length > 18) {
resultMessage = '长度应为4到18个字符';
}
else if ($target.value.indexOf('-') == 0) {
resultMessage = '不能以"-"开头';
}
else if ($target.value.indexOf('_') == 0) {
resultMessage = '不能以"_"开头';
} else {
resultMessage = '用户名格式错误';
}
manageResult($target,resultMessage,false);
} else {
manageResult($target,'',true);
}
}

 

//检查昵称

function checkNickname() {

var regNickname = new RegExp(/^[^\|\+\)\(\*&\^%\$#@\!~\=\\\}\{\]\[\:;\?><]{4,10}$/);

var matchCharacters = new RegExp(/[\|\+\)\(\*&\^%\$#@\!~\=\\\}\{\]\[\:;\?><]+/g);

if (!regNickname.test($target.value)) {

if ($target.value.length < 4 || $target.value.length > 10) {

resultMessage = '长度应为4到10个字符';

} else if(matchCharacters.test($target.value)) {

resultMessage = '不能包含特殊字符' + $target.value.match(matchCharacters).join('');

}

else {

resultMessage = '昵称格式错误';

}

manageResult($target,resultMessage,false);

} else {

manageResult($target,'',true);

}

}


jQuery的基本语法就不做介绍:

1.ready方法相当于onload的方法!

2.是增加监听,$('#username,#nickname').change(function () {

$(this).one('blur',function(event) {
checkInfo(event);

})

});

这是为'#username,#nickname'的+上change和blur监听,其中blur只运行一次。

3.var regUsername = new RegExp(/^[a-zA-Z0-9][\w-]{3,17}$/g);创建正则。.test($target.value)是匹配正则。

4. $target.value.match(matchCharacters).join('');是将matchCharacters中的存在于$target.value的字符组成字符串

 

问题:

1.开始的时候用的是match没有+。join(“”)方法,这时会返回一个数组。但是要注意。如果用上面matchCharacters这个正则变量的时候,他会把没有转义“\”的字符认为是一个,所以会出现几个特殊符号在一个数组下标下。

2.开始+监听的时候没有用一次性事件而是用的永久的事件。这样就会出现重复绑定的错误导致程序出现了多次运行。

在此问题出现后,曾经试过用解绑的方法但效果不好,!。原因:当你触发change的时候就会绑定一个blur,这时你不触发change但是blur事件还是存在这样就与设计相违背。所以采用一次性事件!

 

写的不好请大家见谅!

 

分享到:
评论

相关推荐

    jquery+纯生javascript写的适合初学者

    标题中的“jquery+纯生javascript写的适合初学者”...对于初学者来说,这份资源可以提供实际的编程经验,帮助他们更好地理解和应用JavaScript和jQuery,同时通过五子棋项目的实现,还能锻炼问题解决和逻辑思考能力。

    Jquery+Jquery ui资料

    jQuery是一款广泛应用于网页交互与动态效果的JavaScript库,它极大地简化了JavaScript代码,使得DOM操作、事件处理、动画效果以及AJAX请求变得更加简单易用。而jQuery UI则是在jQuery基础上扩展的一套用户界面组件库...

    jquery学习心得

    ### jQuery 学习心得 #### 一、简介与特点 jQuery 是一款优秀的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互等操作,使得前端开发更加高效便捷。jQuery 的核心理念是“写得少,做得多”...

    基于jquery的树形结构JsTree 使用心得

    **基于jQuery的树形结构JsTree使用心得** JsTree是一款基于JavaScript的开源库,它能够帮助开发者轻松地在网页上创建交互式的树形结构。在本文中,我们将深入探讨如何利用jQuery与JsTree来构建这样的功能,同时分享...

    jQuery学习心得总结(必看篇).docx

    ### jQuery学习心得总结 #### 一、jQuery简介与特点 jQuery 是一款优秀的 JavaScript 库,它的出现极大地简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互等操作。自2006年发布以来,jQuery 已经成为了前端...

    jquery开发入门整理(所需要了解的)

    ### JavaScript使用心得汇总:从BOM和DOM谈起 - **BOM (Browser Object Model)**:描述了浏览器窗口的模型,包括`window`对象及其相关的属性和方法。 - **DOM (Document Object Model)**:描述了如何以结构化的方式...

    jquery ui

    jQuery UI是基于JavaScript库jQuery的一款强大的用户界面库,它提供了丰富的交互效果、可自定义的组件以及易于使用的主题系统。jQuery UI旨在简化网页的用户界面开发,使得开发者能够快速构建功能丰富的、用户体验...

    jQuery大鱼吃小鱼游戏源代码.zip

    【jQuery大鱼吃小鱼游戏源代码】是一个基于JavaScript库jQuery开发的互动游戏,它将玩家带入一个充满生机的海底世界,其中包含了美丽的大海背景、色彩斑斓的珊瑚以及各种大小的鱼群。这个游戏的核心玩法是“大鱼吃...

    2_web开发_jquery_

    jQuery是一款广泛应用于Web开发的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作和Ajax交互等任务。通过学习和实践jQuery,开发者可以更高效地实现网页动态效果和交互功能。 ### 一、jQuery核心概念 1. ...

    js 学习课程 ppt

    1. 客户端JavaScript:这是最常见的使用方式,通过在HTML中内联或外部引用JS文件,实现页面交互功能,如AJAX(异步JavaScript和XML)用于无刷新数据交换,jQuery等库简化了DOM操作。 2. Node.js:这是一个基于...

    jquery easyui使用心得

    2. **排除验证错误**:如果遇到像 `jquery-1.7.2.min.js` 报错的情况,可以在 MyEclipse 中选择“Exclude From Validation”以避免 IDE 的语法检查问题。 3. **编写 HTML 结构**:在 HTML 中使用 EasyUI 组件的特定...

    浅谈jQuery绑定事件会叠加的解决方法和心得总结

    在JavaScript和jQuery的世界中,事件绑定是常见的交互方式,它允许我们对用户的操作做出响应。然而,如果在处理动态内容时不小心,可能会遇到事件绑定叠加的问题,这正是本文要探讨的核心话题。 首先,我们需要理解...

    弹窗js库文件

    学习和使用弹窗js库,开发者需要掌握基本的JavaScript语法、DOM操作和事件监听。同时,理解浏览器兼容性和性能优化也是重要的实践环节。在实际项目中,选择合适的弹窗解决方案需要考虑用户体验、功能需求、开发效率...

    JavaScript学习经历

    ### JavaScript学习经历与心得 #### 一、JavaScript的演变与重要性 JavaScript 作为一种脚本语言,最初只是用于实现简单的网页交互效果,如表单验证、弹出窗口等。随着互联网技术的发展,尤其是 AJAX 技术的出现,...

    JavaWeb自学的心得和笔记

    最后,对于前端开发,理解HTML、CSS和JavaScript是基础,熟悉Ajax异步请求、jQuery库能提高开发效率。如果对响应式设计有所了解,将有助于创建适应不同设备的Web应用。 在自学过程中,不断实践、编写项目是提升技能...

    select2 动态下拉框插件以及开发心得

    标题“select2 动态下拉框插件以及开发心得”指出,我们将探讨一个名为“select2”的JavaScript插件,它主要用于创建动态下拉选择框,并且将分享在开发过程中的一些经验和体会。这暗示了我们将深入讨论select2的功能...

Global site tag (gtag.js) - Google Analytics