Passing a parameter to function with single quote

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="https://stackoverflow.com/questions/19399610/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="https://stackoverflow.com/questions/19399610/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
            ));
   });

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\'

You can escape it using \:

var htmlAnch="<a onclick="javascript:selectEmployee(1100,\"Lauren O\'Donald\');return false;" 
             href="https://stackoverflow.com/questions/19399610/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);

try something like this

    var htmlAnch="<a onclick="javascript:selectEmployee(1100,\"Lauren O\'Donald\');return false;" href="https://stackoverflow.com/questions/19399610/javascript:void(0);">O\'Donald, Lauren</a>';

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;

    }

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("'", "\'")) %>')**">


The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .
Read More:   How to convert a hexadecimal string to Uint8Array and back in JavaScript?

Similar Posts