今天又完成几个功能,其中一个功能是:报料者填写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>