Citações triplas?Como delimito um parâmetro de string Javascript de ligação de dados no ASP.NET?

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

Pergunta

Como delimito um parâmetro de string vinculado a dados Javascript em uma âncora OnClick evento?

  • Eu tenho uma tag âncora em um controle ASP.NET Repeater.
  • O OnClick O evento da âncora contém uma chamada para uma função Javascript.
  • A função Javascript usa uma string como parâmetro de entrada.
  • O parâmetro string é preenchido com um valor vinculado a dados do Repetidor.

Eu preciso das "aspas duplas" para o Container.DataItem.
Eu preciso das 'aspas simples' para o OnClick.

E eu ainda preciso mais um delimitador (aspas triplas?) para o parâmetro de string de entrada da chamada de função Javascript.

Como não posso usar 'aspas simples' novamente, como posso garantir que a função Javascript saiba que o parâmetro de entrada é uma string e não um número inteiro?

Sem as aspas extras em torno do parâmetro string de entrada, a função Javascript pensa que estou passando um número inteiro.

A âncora:

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

e aqui está o 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>
Foi útil?

Solução

Recentemente, tive um problema semelhante e a única maneira de resolvê-lo foi usar códigos HTML simples e antigos para single (&#39;) e aspas duplas (&#34;).

O código-fonte estava uma bagunça total, é claro, mas funcionou.

Tentar

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

ou

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

Outras dicas

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

Use como acima.

Sem as aspas extras em torno do parâmetro string de entrada, a função Javascript pensa que estou passando um número inteiro.

Você pode executar alguma função de string rudimentar para forçar o JavaScript a transformá-la em uma string?Como

value = value + ""

Tente colocar o texto extra dentro do bloco de script do lado do servidor e concatenar.

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

Editar:Tenho certeza de que você também poderia usar aspas duplas fora do bloco de script.

Passando variável para função sem aspas simples ou duplas

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top