自动替换中文的全角逗号为英文的逗号的javascript脚本

今天又完成几个功能,其中一个功能是:报料者填写tag时不会注意中文逗号和英文逗号的区别,有人习惯了用空格来隔开标签,所以我弄了个javascript把空格转换为逗号,把中文逗号改为英文逗号,把两个相邻的逗号替换成一个,这样就有很大的兼容性了。

代码如下:

<script type=”text/javascript”>
//将中文逗号转换为英文逗号 str:待替换的字符
function ReplaceDot(str)
{
var Obj=document.getElementById(str);
var oldValue=Obj.value;
while(oldValue.indexOf(“,”)!=-1)//寻找每一个中文逗号,并替换为逗号
{
Obj.value=oldValue.replace(“,”,”,”);
oldValue=Obj.value;
}
while(oldValue.indexOf(” “)!=-1)//问号中间是一个空格,看不到但存在。寻找每一个中文空格,并替换为逗号
{
Obj.value=oldValue.replace(” “,”,”);
oldValue=Obj.value;
}
while(oldValue.indexOf(“,,”)!=-1)//寻找每两个中文逗号,并替换成一个逗号
{
Obj.value=oldValue.replace(“,,”,”,”);
oldValue=Obj.value;
}
}
</script>

用法:
在tag的输入框里加上onBlur事件,这样就在用户输入完成后离开输入框就开始替换中文逗号和空格:

<input name=”tag” type=”text” id=”tag” value=””size=”30″   onBlur=”ReplaceDot(‘tag’)” />

这篇文章同步到twitter上后,@ixever 建议我减少代码量可以用正则表达式

@zuola 为什么不用正则表达式 str.replace(“正则表达式” , “,”);
— xever (@ixever) October 11, 2013

刚才尝试改了一下,发现replace即使加正则也只在一行内搜索替换一次,如果人有输入了空格加逗号就会有两个相邻的逗号出现,所以还是得用 while 来再查一次。

<script type=”text/javascript”>
//将中文逗号转换为英文逗号 str:待替换的字符
function ReplaceDot(str)
{
    var Obj=document.getElementById(str);
        Obj.value=Obj.value.replace(/,| /gi,”,”);//找到中文空格和中文逗号,替换为英文逗号

   while(Obj.value.indexOf(“,,”)!=-1)//把两个相邻的逗号替换成一个逗号
    {
        Obj.value=Obj.value.replace(“,,”,”,”);
    }
}
</script>

来自周曙光的BLOGSPOT空间

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据