上上个项目中的bug,用户要插入带有英文单引号的短信内容,当时的做法是给予提示,不让插入,今天要改成允许插入。
以前的代码:
if (MsgContent.value.indexOf("'") > -1) {
alert("短信内容不能包含单引号");
return false;
}
如要改成允许插入,需要把单引号进行转义。插入时,把单引号替换成两个单引号。即把 ' 变为 ''
1、在C#中很好转换。
string content=MsgContent.replace("'","''");
content即为转换好的字符串,C#中的replace会把字符串中的所有单引号全部转换为两个单引号。
本以为大功告成,要在外网的服务器上替换DLL,同事说最好不要替换dll,用JS实现,然后替换页面,这样避免了替换DLL带来的未知的错误。(以前替换dll的时候页面出现乱码什么的)so......用JS实现替换。
2、JS实现替换
var content;
if (MsgContent_tea.value.indexOf("'") > -1) {
content = MsgContent_tea.value.replace( "'","''");
}
else
{
content=MsgContent_tea.value;
}
测试,问题出现,此replace只能替换一次,不能全部替换!!
解决方案,在被替换的字符后面加 /g ,当然,前面被替换的字符也要稍微变一下,不能是引号了,其实就是变成正则表达式。正确的替换代码:
var content;
if (MsgContent_tea.value.indexOf("'") > -1) {
content = MsgContent_tea.value.replace( /'/g,"''");
}
else
{
content=MsgContent_tea.value;
}
PS:JS是可以使用+=的,很多跟C#的语法一样。
二、JS的调试方法 在修改上面BUG的过程中,需要对写的JS进行调试,因为当时写的JS只能替换一次,所以自己写for循环进行替换了。- -!
不过傻人有傻福,学到了好东西。对于JS的调试,实训的时候剑哥教我们用IE自带的开发工具进行调试,可惜这个系统用的是框架结构,调不出来,显示的只是外层框架的JS。
解决方案:首先得有 Firebug插件。在火狐浏览器中找插件能找到。然后在JS的方法后加 debugger
例:
function insert() {
debugger
var content;
if (MsgContent_tea.value.indexOf("'") > -1) {
content = MsgContent_tea.value.replace( /'/g,"''");
}
else
{
content=MsgContent_tea.value;
}
}
运行页面,启动插件。脚本应该默认启动的吧。如果运行的时候JS直接过去了,没停在debugger处,那可以先关闭脚本调试,然后再开启。这样就OK了。
三、object对象是JS最基本的对象,声明与使用:var={ }
JS的两种写法:
1、function add(e){ ... }
2、add:function(e) {...}
window.location.reload();重新加载