Citazioni triple? Come posso delimitare un parametro di stringa Javascript databound in ASP.NET?

Translate

Come posso delimitare un parametro di stringa associata a dati Javascript in un'ancoraOnClickevento?

  • Ho un tag di ancoraggio in un controllo ripetitore ASP.NET.
  • IlOnClickL'evento dell'ancora contiene una chiamata a una funzione Javascript.
  • La funzione Javascript accetta una stringa come parametro di input.
  • Il parametro stringa viene popolato con un valore associato a dati dal ripetitore.

Ho bisogno delle "virgolette doppie" per il fileContainer.DataItem.
Ho bisogno delle "virgolette singole" per il fileOnClick.

E ho ancora bisognoun altro delimitatore(virgolette triple?) per il parametro della stringa di input della chiamata alla funzione Javascript.

Dato che non posso usare di nuovo le "virgolette singole", come posso assicurarmi che la funzione Javascript sappia che il parametro di input è una stringa e non un numero intero?

Senza le virgolette aggiuntive attorno al parametro della stringa di input, la funzione Javascript pensa che sto passando un numero intero.

L'ancora:

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

ed ecco il 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>
This question and all comments follow the "Attribution Required."

Tutte le risposte

Translate

Recentemente ho avuto un problema simile e l'unico modo per risolverlo era usare semplici vecchi codici HTML per single (&#39;) e virgolette doppie (&#34;).

Il codice sorgente era ovviamente un disastro totale, ma ha funzionato.

Provare

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

or

<a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>Show/Hide</a>
fonte
Xanthe Lee
Translate
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '

Usa come sopra.

fonte
Translate

Senza le virgolette aggiuntive attorno al parametro della stringa di input, la funzione Javascript pensa che sto passando un numero intero.

Puoi fare qualche rudimentale funzione stringa per forzare JavaScript a trasformarlo in una stringa? Piace

value = value + ""
fonte
Translate

Prova a inserire il testo extra all'interno del blocco di script lato server e concatenalo.

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

Modifica: sono abbastanza sicuro che potresti usare anche le virgolette doppie al di fuori del blocco di script.

fonte
Daphne Lee
Translate

Passaggio di variabile alla funzione senza virgolette singole o doppie

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