Reputation: 5266
How do I pass a parameter to a javascript function with '
included
var name ="Lauren O'Donald";
var htmlAnch='<a onclick="javascript:selectEmployee(1100,"'+name+'");return false;"
href="javascript:void(0);">O'Donald, Lauren</a>';
$(document).append($(htmlAnch));
The javascript function is not executing since the name 'Lauren O'Donald'
contains single quote.
How can I add a parameter with '
and prepare dynamic html to make it work?
Here is the dynamic code to generate
var rows = new StringBuffer();
$(data).each(function(index) {
rows.append(String.format('<tr><td><a href="No.aspx"
onclick="javascript:selectEmployee({3},\"{1} {2}\");return
false;">{0}</a></td></tr>',
String.format("{0}, {1}", this.Surname, this.FirstName),
this.Surname,
this.FirstName,
this.Id
));
});
Upvotes: 24
Views: 76144
Reputation: 189
In .aspx file you can do like as below:
<a data-open="editTemplateOverrideModal" onClick="populateUp
dateModal('<%#Server.HtmlEncode(Convert.ToString(DataBinder.Eval(Container.DataItem, "Description")).**Replace("'", "\'")) %>')**">
Upvotes: 0
Reputation: 39550
You can escape quotes/characters by prepending \
to it:
var string = 'my string with "double quotes" and \'single quotes\'';
var string = "my string with 'single quotes' and \"double quotes\"";
// ^ ^
Using a dynamic string:
var foo = "bar with 'quotes'";
var string = 'my string with "double quotes" and ' + foo.replace(/'/g, "\\'");
//my string with "double quotes" and bar with \'quotes\'
Upvotes: 37
Reputation: 4785
Write your own function to return a escaped string. Demo
Pass your string as argument to this function and you will get escaped string. You can also add more characters to blocklist if you want to escape some more characters
function remove_quotes(values1)
{
var values = values1.toString();
var str = "";
var blockList = ['"','\'','\\']; // This is the list of key words to be escaped
var flag = 0;
for(var i = 0;i<values.length;i++)
{
for(var j=0;j<blockList.length;j++)
{
if(values[i] == blockList[j])
{
flag = 1;
break;
}
}
if(flag == 0)
str += values[i];
else
{
str += '\\';
str += values[i];
flag = 0;
}
}
return str;
}
Upvotes: 3
Reputation: 10906
try something like this
var htmlAnch='<a onclick="javascript:selectEmployee(1100,\'Lauren O\'Donald\');return false;" href="javascript:void(0);">O\'Donald, Lauren</a>';
Upvotes: 1
Reputation: 337714
You can escape it using \
:
var htmlAnch='<a onclick="javascript:selectEmployee(1100,\'Lauren O\'Donald\');return false;"
href="javascript:void(0);">O\'Donald, Lauren</a>';
However as you've tagged this question with jQuery,a better solution is to hook up an event to the element and use data-*
attributes to store the relevant information, which will avoid the use of ugly onX
attributes. Try this:
var $htmlAnch = $('<a />' {
text: "O'Donald, Lauren" ,
data-id: 1100,
data-name: "Lauren O'Donald"
}).click(function(e) {
e.preventDefault();
selectEmployee($(this).data('id'), $(this).data('name'));
});
$(document).append($htmlAnch);
Upvotes: 6