JavaScript实现:多个onload与表单操作代码段
65 浏览量
更新于2024-08-29
收藏 59KB PDF 举报
"这篇资源主要分享了一些实用的JavaScript表单相关的代码片段,包括如何处理多个window.onload事件、正则表达式去除字符串首尾空格、过滤中文字符、禁止用户复制和粘贴,以及限制字符串长度(区分中英文)的方法。"
在JavaScript中,表单处理是非常常见且重要的任务。以下是对这些代码段的详细解释:
1. **处理多个window.onload事件**:
当一个页面加载完成时,`window.onload` 事件会被触发。然而,如果需要在页面加载后执行多个函数,直接将它们附加到 `window.onload` 只会覆盖先前的函数。为了解决这个问题,我们可以创建一个 `addLoadEvent` 函数,它允许我们将多个函数添加到加载事件中,而不会相互覆盖。该函数首先保存当前的 `onload` 事件处理函数,然后将新的函数添加到现有的处理程序中,确保所有函数都会被调用。
```javascript
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
```
2. **正则表达式去空格**:
有时我们需要去除字符串两端的空格。可以使用正则表达式 `/^(\s|\u00A0)+|(\s|\u00A0)+$/g` 来匹配并替换任何开头或结尾的空格或不可见的空白字符(如NO-BREAK SPACE,Unicode 编码为 \u00A0)。
```javascript
str.replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g, "");
```
3. **利用正则过滤中文**:
如果需要从字符串中移除所有中文字符,可以使用正则表达式 `/[\u4e00-\u9fa5]/g` ,这个正则会匹配所有中文范围内的字符。
```javascript
str.replace(/[\u4e00-\u9fa5]/g, "");
```
4. **禁止用户的拷贝和复制**:
在某些情况下,可能希望阻止用户通过鼠标或键盘复制表单中的内容。这可以通过在元素上设置 `oncopy` 和 `onpaste` 事件来实现,并返回 `false` 阻止默认行为。
```javascript
xxx.oncopy = function() {
return false;
};
xxx.onpaste = function() {
return false;
};
```
5. **限制字符串长度(区分中英文)**:
JavaScript 的 `substr` 方法不区分中英文字符长度,但我们可以自定义一个函数来计算不同模式下的字符串长度。这里提供了一个函数 `strLen`,它可以区分中文字符(在 "Ch" 模式下,每个中文字符计为2个字符)和英文字符(在 "En" 模式下,每个字符计为1个字符)。这个函数可以用于在用户输入时实时计算并限制字符串的长度。
```javascript
var strLen = (function() {
return function(_str, _model) {
_model = _model || "Ch";
var _strLen = _str.length;
// ... 具体实现省略 ...
}
})();
```
这些代码片段提供了处理JavaScript表单操作的一些实用技巧,可以帮助开发者更高效地管理页面加载、文本处理和用户交互。
125 浏览量
2017-05-12 上传
2018-08-02 上传
2022-08-03 上传
2015-11-12 上传
2017-12-14 上传
点击了解资源详情
2019-07-17 上传
2015-07-09 上传
weixin_38689922
- 粉丝: 6
- 资源: 914
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析