通过特殊字符的字符串值的函数的Javascript
问题描述:
我有一个需要全名作为输入的功能,这个名称可以有连字符,apotrohpe,逗号等通过特殊字符的字符串值的函数的Javascript
function AddOtherRefDoc(name, number) {
var remove = "<a \href='javascript:void(0);' onclick='removeRefDoctor(this,'"+name+"',"+number+");'\">Remove</a>";
var html = "<li><b> Referral Doctor: </b>"+name+"<b>, Referral No: </b>"+number+ " " +remove+" <input type='text' name='ref_docs' value='"+name+"'></input><input type='text' name='ref_nos' value='"+number+"'></input></li>";
jQuery(opener.document).find("#r_docs").append(html);
}
我传递名称的方式removeRefDoctor(),它不起作用。如何将此名称包装为一个字符串,以便该函数可以接受此值。
非常感谢您的帮助。
答
它会是您更容易阅读和修正,如果你想重新实现它这样的两个变量:
var remove = $("<a/>")
.attr('href', 'javascript:void(0);')
.click(function() {
removeRefDoctor(this,name,number);
})
.text('Remove');
答
我看到第二行的一些错误。
使用此
var remove = "<a href=\"javascript:void(0);\" onclick=\"removeRefDoctor(this,"+name+","+number+");\">Remove</a>";
答
您正在使用单引号引用onclick属性和引用的函数传递的name
值。这会尽早关闭您的onclick属性。您的name
价值中也可能有单引号。您需要在名称值周围使用双引号,并且还要避免使用任何引号以避免出现HTML分析问题。同样,你需要逃避你在哪里使用name
的价值为您<input />
var attrName = name.replace(/'/g, ''');
var jsName = attrName.replace(/"/g, '\\"');
引号用它在你的函数是这样的:
function AddOtherRefDoc(name, number) {
var attrName = name.replace(/'/g, ''');
var jsName = attrName.replace(/"/g, '\\"');
var remove = "<a \href='javascript:void(0);' onclick='removeRefDoctor(this,\""+jsName +"\","+number+");'\">Remove</a>";
var html = "<li><b> Referral Doctor: </b>"+name+"<b>, Referral No: </b>"+number+ " " +remove+" <input type='text' name='ref_docs' value='"+attrName+"'></input><input type='text' name='ref_nos' value='"+number+"'></input></li>";
jQuery(opener.document).find("#r_docs").append(html);
}
这就是答案,为什么你的代码ISN不像你期望的那样工作。所有人都说,我会与迈克汤普森的方法。这使得更多的意义,并为您解决了很多问题。
对不起,我忘了接受。 – Sapphire 2011-05-06 18:14:24