JS采用ActiveXObject实现用户在提交表单时屏蔽敏感词的功能
本例中敏感词ciku.txt放在C盘根目录下,采用的ActiveXObject插件获取本地文件内容。使用此插件不需网上下插件,直接用如下js代码即可。
浏览器需修改interner安全选项的级别,启用ActiveX才能获取到代码中的ActiveXObject插件。如下图所示:

js代码实现如下:
<script type="text/javascript">
// -------------- 全局变量,用来判断文本域中是否包含脏词,默认为false,即不包含脏词-------
var isDirty = false;
//使用ActiveX读取本地文件获取dirtyword词库
function readFile(){
//var ForReading = 1;
var fso = new ActiveXObject("Scripting.FileSystemObject");
openF = fso.OpenTextFile("c:\\ciku.txt", 1);
var cikuStr= openF.ReadAll();
return cikuStr;
}
/*
* 提交表单的主方法
* 在提交表单的时候对内容进行过滤并在文本域显示过滤后的内容
*/
function submitForm1() {
var messageValue=document.getElementById("message").value;
var cikuStr=readFile();
var cikuArr= new Array(); //定义数组,存储敏感词
cikuArr=cikuStr.split(" "); //敏感字符分割
for (var i=0;i<cikuArr.length;i++){
var flag=cikuArr[i];
if(messageValue.indexOf(flag)>=0){ //查找文本域中是否包含敏感字符,是则替换
filterWord(messageValue);
var ifs=confirm("你的留言中含有不恰当的词语,系统已自动为你修改,是否继续提交?");
break;
}else{ //无敏感字符,直接提交表单
document.getElementById("message_board").submit();
break;
}
}
if(ifs){ //用户点击确定,则提交表单
document.getElementById("message_board").submit();
}
}
/*
* 对传进来的messageValue过滤并返回新内容
*/
function filterWord(messageValue){
// 根据文本域的id获取文本域对象内容
var cikuStr=readFile();
var cikuArr= new Array(); //定义数组,存储敏感词
cikuArr=cikuStr.split(" "); //敏感字符分割到数组内
for (var i=0;i<cikuArr.length;i++){
messageValue=filterOneWord(messageValue,cikuArr[i]);//filterOneWord函数每次替换一个字符,需循环调用
}
document.getElementById("message").value=messageValue; //将替换后的内容显示到文本域中
}
/*
* 这个函数用来过滤单个词语, 如果messageValue中含有oneDirtyWord, 则用"**"替换这个oneDirtyWord
* messageValue --- 要过滤的语句
*/
function filterOneWord(messageValue,oneDirtyWord){
var str=messageValue.replace(new RegExp(oneDirtyWord,'g'),"**");
return str;
}
</script>
表单部分代码:
<body>
<form name="message_board" id="message_board" action="aaa.html">
<textarea name="message" id="message" cols="50" rows="10">
"This is you post messsage"
——phpdream
</textarea><br/>
<input type="button" value="提交留言" id="submitMessage" onclick="submitForm1()"/>
</form>
</body>
JS采用ActiveXObject实现用户在提交表单时屏蔽敏感词的功能的更多相关文章
- php提交表单时如何保留多个空格及换行的文本样式
需求是:用户提交表单时屏蔽敏感词的功能.其中敏感词来自服务器端同一路径下的ciku.txt,敏感词通过"|"连接,例如"g|c|a",提交表单时替换敏感词,更重 ...
- PHP防止用户重复提交表单
我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦. 那么如何规避 ...
- Ajax实现提交表单时验证码自动验证(原创自Zjmainstay)
本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...
- Django:提交表单时遇到403错误:CSRF verification failed
Django:提交表单时遇到403错误:CSRF verification failed 问题: 提交表单时遇到403错误:CSRF verification failed 解决方案: 在表单界面ht ...
- JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验
1.现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单 <%@ page language=" ...
- POST方式提交表单时,后台接受实体如果继承了父类,将无法映射表单对应数据
引言 刚才在做一个post提交表单时,我在表单里放了几个隐藏域用来存放数据,表单name属性和后台实体属性签名保持一致.只是后台Action参数包含继承关系,所以无法获取到表单对应的值.刚开始一直纳闷 ...
- php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
if(isset($_POST['submit'])) 它的意思是不是判断是否配置了$_POST['submit'] 这个变量呢?如果有这个变量 在执行其它代码 应该这样用if(isset($_POS ...
- submit()提交表单时,显示警示框
我同事在实现submit()提交表单时,想要页面弹出警示框. 但是折腾了几小时后发现,submit()始终不执行. 她的代码如下: $(document).ready(function(){ $(&q ...
- 只有设置了 name 属性的表单元素才能在提交表单时传递它们的值
$(function () { var wait = $("<img src=\"\" alt=\"正在上传\"/>"); $( ...
随机推荐
- Roguelike元素对游戏设计的影响
Roguelike game自1980年以来,就占据着游戏市场中很大的份额,而现如今的很多游戏中,也加入了Roguelike元素来起到更好的效果.我们知道Roguelike game中有着一些看似任性 ...
- python-day 练习1
#!/usr/bin/env python# -*- coding:utf-8 -*-'''需求: a. 元素分类 有如下值集合 v1 = [11,22,33,44,55,66,77,88,99,90 ...
- scala读取jar包外配置文件的方式
在scala的开发过程中,经常会修改程序的参数,将这些参数放到配置文件中避免了重复编译,打包的过程 这里给出读取配置文件的三种方式 方式一: 这是最常见的读取配置文件方式 val postgprop ...
- 【vue系列之一】使用vue脚手架工具搭建vue-webpack项目
对于Vue.js来说,如果你想要快速开始,那么只需要在你的html中引入一个<script>标签,加上CDN的地址即可.但是,这并不算是一个完整的vue实际应用.在实际应用中,我们必须要一 ...
- Apache localhost和局域网ip地址访问
今天忍无可忍重装了公司的电脑,所以把开发工具也都重新装一下. 安装wamp,localhost和局域网ip地址无法访问. 在C:\Windows\System32\drivers\etc\hosts文 ...
- HDU4497GCD and LMC最大公约数与最小公倍数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 题目大意: 求gcd(x,y,z)=G且lcm(x,y,z)=L的方法数. 题目分析: 起初这 ...
- [刷题]ACM/ICPC 2016北京赛站网络赛 第1题 第3题
第一次玩ACM...有点小紧张小兴奋.这题目好难啊,只是网赛就这么难...只把最简单的两题做出来了. 题目1: 代码: //#define _ACM_ #include<iostream> ...
- 作为.net程序员学jsp,伤不起
<%@page import="java.sql.*"%> <%@ page language="java" import="jav ...
- 13、Java菜单条、菜单、菜单项
13.Java菜单条.菜单.菜单项 一般用Java做界面时,都得牵涉到菜单条.菜单.菜单项的设计.菜单项放在菜单里,菜单放在菜单条里,且其字体均可设置. 13.1.菜单条(Menubar) Frame ...
- 将非官方扩展程序加入chrome的白名单
参考来源:http://xclient.info/a/1ddd2a3a-d34b-b568-c0d0-c31a95f0b309.html com.google.Chrome.mobileconfig ...