不怕不知道,就怕不知道——js转义问题

碰到一个比较变态的需求,由于前台产品显示的需要,后台录入的时候,需要注意很多点,比如这里要输入的标点符号必须是全角的,那里输入的标点符号必须是半角的。

如果是你拿到这种需求,你会怎么办呢?

这种东西,网上资料还是很多的,不过几乎所有的都不能直接解决你的问题。我在做这个需求的时候,一看是的想法是:用户输入错误时,给他一个提示。

这样问题来了,用户不断的输入,不断的弹出alert(),体验是很不友好的。

然后我就采取了第二种方案,用户输入过程中有误时,我就在文本框后面加一个<span>提示框。提示用户输入错误,不过这个会改变后台输入页面的样式。还要麻烦前端大哥该页面,所以直接采用了第三种方式。

第三种方式很简单,就是在用户输入时,自动修正。

需求要求:A【id为A】文本框输入的所有标点,必须为全角;B【id为B】文本框输入的所有标点必须为半角。

我在实现的过程中,遇到了一个问题:自动校为半角时能够全部成功(全角转半角);而半角转全角时,却一直失败!

弄了老半天,才解决问题。解决的过程其实很奇葩,当我看到mybatis的xml里面的<![CDATA[]>的时候,我才意识到,可能是js转义的问题。

想了一想,为什么弄了老半天才解决问题呢?

还是自己JS这一块儿的知识比较欠缺呀。

下面,贴出代码,给大家晒一晒:

$(function(){
	$("form :input.required").each(function(){
        var $required = $("<strong class='high'> *</strong>"); //创建元素
        $(this).parent().append($required); //然后将它追加到文档中
    }); 

	$("form :input").blur(function(){
		var $parent = $(this).parent();
		$parent.find(".formtips").remove();

		if($(this).is("#A")){
			if(this.value.length>16){
				var errorMsg ='不能超过16个字!';
				$parent.append('<span class="formtips onError">'+errorMsg+'</span>');
			}

			if($("#A").val().length>0){//半角转全角
				$("#A").val($("#A").val().replace(/\?/g,'\?').replace(/\</g,'《').replace(/\>/g,'》')
.replace(/'/g,'\‘').replace(/'/g,'\’').replace(/,/g,',').replace(/\./g,'。').replace(/\;/g,';'));
			}
		}

		if($(this).is("#B")){
			if(this.value.length>12){
				var errorMsg ='不能超过12个字!';
				$parent.append('<span class="formtips onError">'+errorMsg+'</span>');
			}
			if($("#B").val().length>0){//全角转半角
				$("#B").val($("#B").val().replace(/,/g,',').replace(/‘/g,'\'').replace(/’/g,'\'')
.replace(/;/g,';').replace(/。/g,'.').replace(/《/g,'<').replace(/》/g,'>').replace(/?/g,'?'));
			}
		}

	}).keyup(function(){
		$(this).triggerHandler("blur");
	}).focus(function(){
		$(this).triggerHandler("blur");
	});
})

如上代码:标点半角转全角,需要转义。至于原因,在JS里面"."代表的是匹配所有字符。所以我将输入的内容replace时,它会将所有字符匹配为"。"。

其他的,大家可以自己查一下,了解一下就可以。

PS:学了一段时间JQuery了,终于有点感觉了~~~

功能有大小,尽善尽美是标准。

时间: 2024-10-09 19:11:16

不怕不知道,就怕不知道——js转义问题的相关文章

js 转义特殊字符到 html

<html>       <head>         <meta charset="UTF-8">         <title>js 转义特殊字符到 html</title>     </head>     <body>           <div id="div1" ></div>           <div id="div2&quo

js转义问题

js转义问题有很多场景,比如常见的根据某个字符串删除或者修改以及将某字符串传递至某个页面. 今天以一个简单的示例代码为例: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试</title> </head> <body> <a href='#'

js转义和反转义html

本文地址: http://www.cnblogs.com/daysme/p/7100553.html 下面的代码网上常用有,但不是想要的. JS实现HTML标签转义及反转义 http://blog.csdn.net/wangyuheng77/article/details/50315051 简单说一下业务场景,前台用户通过input输入内容,在离开焦点时,将内容在div中显示.这时遇到一个问题,如果用户输入了html标签,则在div显示中,标签被解析.由于是纯前端操作,不涉及后端,因此需要通过j

js 转义双引号

在写js时,里面有很多的单引号和双引号,可以直接转义 imgHmtl += '<dl>'+       '<dt><img src="'+objUrl+'" id="img" /></dt>'+       '<dd onclick="delImg(this, "'+ident+'")"></dd>'+    '</dl>' ; $('#upL

JS转义 escape()、encodeURI()、encodeURIComponent()区别详解

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数 描述 string 必需.要被转义或编码的字符串. 返回值 已编码的 str

js 转义

function html_encode(str) {     var s = "";     if (str.length == 0) return "";     s = str.replace(/&/g, "&");     s = s.replace(/</g, "<");     s = s.replace(/>/g, ">");     s = s.rep

js转义html中的字符

出自:stenio365的博客 //去掉html标签function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,'');//删除所有HTML标签}//普通字符转换成转意符function html2Escape(sHtml) { return sHtml.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&

认识软路由

近期在客户发布网站,遇到了80端口不能访问的问题.通过网上查阅资料,可以通过路由转发的功能跳过80端口的限制.但是,客户这边没有路由器,直接接的外网,于是请教老师后给出了一个软路由的概念.那么什么是软路由呢? 软路由是指利用台式机或服务器配合软件形成路由解决方案,主要靠软件的设置,达成路由器的功能.基本可以实现和正常路由器相似的功能,涵盖流量控制.上网行为管理.路由器.防火墙等众多技术和功能. 如何实现软路由呢? 如果是WindowsServer的系统,自带软路由的功能,只需进行一些配置即可开启

上传视频时自动完成截取缩略图(二)

从上篇文章中我们知道了ffmpeg是怎么使用的.那么这篇文章给大家介绍下我是怎么通过调用ffmpeg实现在视频上传的同时自动截取图片的. 首先我们不能直接调用ffmpeg实现想要的功能是防止cmd命令执行时出现的黑窗口.所以我们可以封装一个类,然后调用里面的方法只需传递参数就可以实现功能了. 这里我写了一个VideoConverToImg类: public class VideoConverToImg { /// <summary> /// 从视频中截取img格式图片 /// </sum