Cotizaciones triples? ¿Cómo delimito un parámetro de cadena de Javascript enlazado a datos en ASP.NET?

votos
30

¿Cómo delimito un parámetro de cadena de datos de Javascript en un OnClickevento ancla ?

  • Tengo una etiqueta de anclaje en un control de repetidor ASP.NET.
  • El OnClickevento 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 completa con un valor de datos del repetidor.

Necesito las comillas dobles para el Container.DataItem.
Necesito las 'comillas simples' para el 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 un entero.

Saludos de antemano por cualquier conocimiento que pueda arrojar.

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>
Publicado el 05/08/2008 a las 05:05
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
20

Recientemente tuve un problema similar y la única forma de resolverlo fue utilizar códigos HTML antiguos simples para &#39;comillas simples ( ) y dobles ( &#34;).

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

Tratar

<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>
Respondida el 05/08/2008 a las 05:28
fuente por usuario

votos
3
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '

Usar como arriba.

Respondida el 28/04/2009 a las 16:11
fuente por usuario

votos
0

Pasar la variable a la función sin comillas simples o comillas dobles

<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>
Respondida el 12/03/2009 a las 02:12
fuente por usuario

votos
0

Intenta poner el texto adicional dentro del bloque de script del lado del servidor y concatenando.

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

Editar: Estoy bastante seguro de que también podría usar comillas dobles fuera del bloque de script.

Respondida el 05/08/2008 a las 05:19
fuente por usuario

votos
0

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

¿Puedes hacer alguna función de cadena rudimentaria para forzar a JavaScript a cambiarla a una cadena? Me gusta

value = value + ""
Respondida el 05/08/2008 a las 05:08
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more