我有一个需要全名作为输入的函数,这个名字可以有连字符,apotrohpe,逗号等。
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()的方式,它不起作用。如何将此名称包装成一个字符串,以便该函数可以接受此值。
非常感谢你的帮助。
答案 0 :(得分:2)
如果你为这两个变量重新实现它,你会更容易阅读和修复:
var remove = $("<a/>")
.attr('href', 'javascript:void(0);')
.click(function() {
removeRefDoctor(this,name,number);
})
.text('Remove');
答案 1 :(得分:0)
我在第二行看到了一些错误。
使用此
var remove = "<a href=\"javascript:void(0);\" onclick=\"removeRefDoctor(this,"+name+","+number+");\">Remove</a>";
答案 2 :(得分:0)
您使用单引号引用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);
}
这就是为什么你的代码没有按预期工作的答案。话虽如此,我会选择Mike Thompson的方法。这更有意义,并为您解决了很多问题。