2008-08-05 3 views
30

¿Cómo delimito un parámetro de cadena de datos de JavaScript en un evento de anclaje OnClick?Triple Quotes? ¿Cómo delimito un parámetro de cadena de Javascript enlazado a datos en ASP.NET?

  • Tengo una etiqueta de anclaje en un control de ASP.NET Repeater.
  • El evento OnClick del ancla contiene una llamada a una función de Javascript.
  • La función Javascript toma una cadena para su parámetro de entrada.
  • El parámetro de cadena se rellena con un valor de datos del Repetidor.

Necesito las "comillas dobles" para el Container.DataItem.
Necesito las 'comillas simples' para OnClick.

Y aún necesito un delimitador más (¿comillas triples?) Para el parámetro de cadena de entrada de la llamada a la función Javascript.

Dado que no puedo usar 'comillas simples' de nuevo, ¿cómo me aseguro de que la función Javascript sabe que el parámetro de entrada es una cadena y no un número entero?

Sin las comillas adicionales alrededor del parámetro de cadena de entrada, la función de Javascript cree que estoy pasando en un entero.

Saludos por adelantado por cualquier conocimiento que pueda soltar.

El ancla:

<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>  

y aquí está el Javascript:

<script language="JavaScript" type="text/javascript"> 
/* Shows/Hides the Jobs Div */ 
function ToggleDisplay(jobCode) 
{ 
    /* Each div has its ID set dynamically ('d' plus the JobCode) */ 
    var elem = document.getElementById('d' + jobCode); 

    if (elem) 
    { 
     if (elem.style.display != 'block') 
     { 
      elem.style.display = 'block'; 
      elem.style.visibility = 'visible'; 
     } 
     else 
     { 
      elem.style.display = 'none'; 
      elem.style.visibility = 'hidden'; 
     } 
    } 
} 
</script> 

Respuesta

20

Tuve un problema similar recientemente y la única manera de resolverlo era usar códigos HTML antiguos simples para solo (&#39;) y comillas dobles (&#34;).

El código fuente era un desastre total, por supuesto, pero funcionó.

Trate

<a id="aShowHide" onclick='ToggleDisplay(&#34;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#34;);'>Show/Hide</a> 

o

<a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>Show/Hide</a> 
+0

Winna !!! Gracias Lubos. Los códigos HTML lo ordenaron (y sí, fue complicado, pero funciona). Solución: onclick = 'ToggleDisplay (" <% # DataBinder.Eval (Container.DataItem, "JOB_Code")%> ");' – Dhaust

+2

" es una comilla doble. ' es una comilla simple – Mahesh

0

Sin las comillas adicionales alrededor del parámetro de cadena de entrada, la función Javascript cree que estoy pasando por un entero .

¿Se puede hacer una función de cadena rudimentaria para forzar a JavaScript a cambiarla a una cadena? Como

value = value + "" 
0

Intente poner el texto adicional dentro del bloque de secuencias de comandos del lado del servidor y concatenando.

onclick='<%# "ToggleDisplay(""" & DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>' 

Editar: Estoy bastante seguro de que podría utilizar comillas dobles fuera del bloque de secuencias de comandos también.

0

variables Pasando a funcionar sin comilla simple o doble cita

<html> 
    <head> 
    </head> 
    <body> 
     <script language="javascript"> 
     function hello(id, bu) 
     { 
      alert(id+ bu); 
     } 
     </script> 
     <a href ="javascript: 
      var x = &#34;12&#34;; 
      var y = &#34;fmo&#34;; 
      hello(x,y)">test</a> 
    </body> 
</html> 
3
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); ' 

Uso como el anterior.

Cuestiones relacionadas