I know this looks silly to ask, but I got a situation where I have to pass parameters to a javascript function, and these parameters are of String
type.
The issue with data is, the data can have single Quote
or Double quote
e.g.
"TEST", TEST
or TEST
. This is coming from the database.
here is my JSTL call on click.
The 2nd parameter value is
ANOTHER " company"
which is the actual root cause.
I tried JSTL fn: replace(.....)
method as well but not succeed.
Note: The value also could be 'ANOTHER' Company
.
<a href="javascript:void(0);"
onclick="return showPopUp('${account.fName}','${fn:replace(account.lName, "\'","\\\'")}','${fn:replace(account.compName, "\'", "\\\'")}','${account.firstTimePin}','${account.email}');return false;">
</a>
this generates the following HTML code.
<a href="javascript:void(0);"
target="_self"
onclick="return showPopup('CRUISE ','ANOTHER " company"','123456','user@directbiller.com');">
</a>
and here is my javascript function
function showPopup(param1,param2,param3,param4){
// busness logic
}
The issue is invalid call/syntax to call showPopup()
method.
Encode it with "
.
function showPopup() { console.log(arguments); }
<a href="javascript:void(0);" target="_self"
onclick="return showPopup('CRUISE ','ANOTHER " company"','123456','user@directbiller.com');">
Link
</a>
Just add another replace term, i.e.
fn:replace(fn:replace(account.compName, "\"", """), "\'", "\\\'")