2012-07-30 82 views
0

我有一个功能,单击时,填写父窗口的字段。在这种情况下,它是一个名称(文本)字段。单引号在Javascript参数

我遇到的问题是,如果该字段中有一个单引号(例如比尔的辣椒),该函数将失败,因为它读取单引号作为参数的结尾。

这里是呼叫:

href="javascript:selectItem('recipe','recipe_name','<recipe_description')" 

再次,如果名字是比尔的辣椒,它会导致一个语法错误。

有没有办法将这个单引号自动转换为HTML等价物,以便它能够正确读取?

感谢

+3

http://stackoverflow.com/q/1219860/1499781 – 2012-07-30 17:53:12

+1

你用什么语言来生成JavaScript? – JJJ 2012-07-30 17:53:47

+0

'''或'\'' – inhan 2012-07-30 17:56:01

回答

0

试试这个

href='javascript:selectItem("recipe","recipe_name","<recipe_description")' 
+2

它会修正任何有'''的东西,但是如果描述有'''怎么办? – JJJ 2012-07-30 17:55:17

2

对于在现场使用单引号\'更多信息转义字符here

href="javascript:selectItem('Bill\'s Chilli','recipe_name','<recipe_description')" 
0

您可以尝试使用逃脱 '双' 报价这样的:

HREF = “JavaScript的:选择信息(\” 配方\ “\ ”recipe_name \“,\ ”recipe_description \“)”

请让我知道它是否有效。通过&#39等“;

+0

什么在这个例子中不起作用? – timestopper 2012-07-30 17:58:59

+0

如果描述是“Wild”Bill's Chili',会发生什么? – JJJ 2012-07-30 17:59:48

+0

请提供正确的解释,不只是'-1'=) – timestopper 2012-07-30 18:00:07

0

你可以使用str.replace

只是remplace”由& QUOT。:)

但实际上,我假设你得到所有的东西从php脚本(从某种存储),在这种情况下,你可以直接用php来逃避报价,这将更安全。

1

我发现的答案是完全不同的,比我想象的页面本身写的是ASP(对不起,我忘了提及,自从f以来我觉得它并不重要联合是JavaScript,它被称为HTML)。

所以,我只是用这样的:

<%fixed_name = Replace(recipe_name,"'","") %> 

然后在函数调用中使用fixed_name代替recipe_name。

感谢您的帮助,它使我朝着正确的方向前进!

+2

所以你剥去了报价,把*比尔的辣椒*变成*票据辣椒*?正如其他人所建议的那样,我会认真考虑转义它:'fixed_name = Replace(recipe_name,“'”,“\\'”)'(不确定是否需要像ASP中的双反斜杠那样在C-喜欢语言) – 2012-07-30 19:36:14