两次逃脱角色,java和javascript

时间:2012-07-14 04:50:14

标签: javascript jquery escaping liferay

我想在JSF中获取文本框的ID以使用jQuery绑定keyup事件。

我在javascript代码中有$('#A3023\\:formId\\:textboxId').live('keyup', function(){...});,它运行正常。但我必须在服务器端调用JavaScript。

所以,我试试$('#A3023\\\\:formId\\\\:textboxId') \的双重转义,但不起作用。

我正在使用liferay来调用JavaScript

JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), 'script code');

我对alert()进行了一些测试。它仍然有效,但没有任何ID。 请问有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在JavaScript中\也是一个转义字符。因此,通过在jQuery选择器的字符串中添加双反斜杠,您实际上只需要包含一个文字的单反斜杠字符 - 然后jQuery以某种方式将其解释为冒号/句点的内部转义字符。

现在,因为\字符也是Java转义字符,这意味着要生成相同的字符串文字,您需要完全改变它。

即。将字符串"$(\"#A3023\\:formId\\:textboxId\")"传递到服务器端执行方法就足够了。