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

StackOverflow https://stackoverflow.com/questions/1873

Pregunta

¿Cómo delimito un parámetro de cadena vinculado a datos de Javascript en un ancla? OnClick ¿evento?

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

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

Y todavía 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 volver a utilizar 'comillas simples', ¿cómo me aseguro de que la función Javascript sepa 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 número entero.

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>
¿Fue útil?

Solución

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

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

Intentar

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

Otros consejos

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

Úselo como arriba.

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

¿Puedes hacer alguna función de cadena rudimentaria para forzar a JavaScript a convertirla en una cadena?Como

value = value + ""

Intente poner el texto adicional dentro del bloque de secuencia de comandos del lado del servidor y concatenarlo.

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

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

Pasar variable para funcionar sin comillas simples o 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top