2013-10-16 12 views
12

Wie gebe ich ein Parameter an eine Javascript-Funktion mit 'einen Parameter Passing mit Apostroph funktionieren

enthalten
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)); 

Die Javascript-Funktion nicht, da der Name 'Lauren O'Donald' enthält Apostroph ausgeführt wird.

Wie kann ich einen Parameter mit ' und dynamischer HTML vorbereiten, damit es funktioniert?

Hier ist der dynamische Code ist

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 
      )); 
    }); 
+0

Verwendung eines umgekehrten Schrägstrich ein paar mehr Zeichen entkommen wollen „\“, um den Apostroph – Raptor

Antwort

25

Sie können quotes/Escape-Zeichen durch das Voranstellen \ es:

var string = 'my string with "double quotes" and \'single quotes\''; 
var string = "my string with 'single quotes' and \"double quotes\""; 
//            ^   ^

eine dynamische Zeichenkette verwenden:

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

der Code aktualisiert. Es generiert dynamisch – Billa

+0

@Billa Überprüfen Sie meine Bearbeitung. – h2ooooooo

+0

Großartig. Es funktioniert :) – Billa

4

Sie es \ mit entkommen zu erzeugen:

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

jedoch, wie Sie diese Frage mit jQuery mit Tags versehen haben, eine bessere Lösung ist bis Haken ein Ereignis, an das Element und die Verwendung data-* die relevanten Informationen zu speichern Attribute, die die Verwendung von hässlichen onX Attribute zu vermeiden. Versuchen Sie folgendes:

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); 
+0

+1 zu entkommen, den richtigen Weg zeigt. – georg

+0

Ich habe meinen Code aktualisiert, der dynamisch generiert und keine Datenattribute verwendet. Überprüfen Sie es bitte – Billa

0

versuchen so etwas wie dieses

var htmlAnch='<a onclick="javascript:selectEmployee(1100,\'Lauren O\'Donald\');return false;" href="javascript:void(0);">O\'Donald, Lauren</a>'; 
1

schreiben Ihre eigene Funktion zum Zurückgeben einer Escape-Zeichenfolge. Demo

Übergeben Sie Ihre Zeichenfolge als Argument an diese Funktion, und Sie erhalten die Zeichenfolge escaped. Sie können auch mehrere Zeichen hinzufügen Zur Blockliste, wenn Sie

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; 

    }