2011-05-06 95 views
0

我有一个需要全名作为输入的功能,这个名称可以有连字符,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(),它不起作用。如何将此名称包装为一个字符串,以便该函数可以接受此值。

非常感谢您的帮助。

+0

对不起,我忘了接受。 – Sapphire 2011-05-06 18:14:24

回答

2

它会是您更容易阅读和修正,如果你想重新实现它这样的两个变量:

var remove = $("<a/>") 
    .attr('href', 'javascript:void(0);') 
    .click(function() { 
     removeRefDoctor(this,name,number); 
    }) 
    .text('Remove'); 
+0

更容易阅读,并可能会解决问题。最有可能的问题是名称中的引号混乱了生成的html,并很快关闭了onclick属性。直接附加处理程序将解决该问题。 – gilly3 2011-05-06 18:40:04

+0

对于名称,名和姓用逗号分隔。所以,如果我传入名称,removeRefDoctor()将有4个参数,而不是3个,所以我需要一种解决方法。 – Sapphire 2011-05-06 19:24:35

0

我看到第二行的一些错误。

使用此

var remove = "<a href=\"javascript:void(0);\" onclick=\"removeRefDoctor(this,"+name+","+number+");\">Remove</a>"; 
0

您正在使用单引号引用onclick属性和引用的函数传递的name值。这会尽早关闭您的onclick属性。您的name价值中也可能有单引号。您需要在名称值周围使用双引号,并且还要避免使用任何引号以避免出现HTML分析问题。同样,你需要逃避你在哪里使用name的价值为您<input />

var attrName = name.replace(/'/g, '&#39;'); 
var jsName = attrName.replace(/"/g, '\\"'); 

引号用它在你的函数是这样的:

function AddOtherRefDoc(name, number) { 
    var attrName = name.replace(/'/g, '&#39;'); 
    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不像你期望的那样工作。所有人都说,我会与迈克汤普森的方法。这使得更多的意义,并为您解决了很多问题。

相关问题