Cotações triplo? Como faço para delimitar um parâmetro de cadeia Javascript databound em ASP.NET?

votos
30

Como faço para delimitar um parâmetro de cadeia de ligação de dados Javascript em uma âncora OnClickevento?

  • Eu tenho uma marca de âncora em um controle ASP.NET Repeater.
  • O OnClickevento da âncora contém uma chamada para uma função JavaScript.
  • A função Javascript leva uma corda para seu parâmetro de entrada.
  • O parâmetro de cadeia é preenchida com um valor de ligação de dados do Repeater.

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

E eu ainda preciso de 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 faço para garantir a função Javascript sabe o parâmetro de entrada é uma string e não um inteiro?

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

Cheers antecipadamente por qualquer conhecimento que você pode cair.

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>
Publicado 05/08/2008 em 05:05
fonte usuário
Em outras línguas...                            


5 respostas

votos
20

Eu tive problema recentemente semelhante e a única maneira de resolvê-lo era usar códigos HTML antigos simples para simples ( &#39;aspas) e duplas ( &#34;).

O código-fonte foi bagunça total, claro, mas ele trabalhou.

Experimentar

<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>
Respondeu 05/08/2008 em 05:28
fonte usuário

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

Use como acima.

Respondeu 28/04/2009 em 16:11
fonte usuário

votos
0

Passando variável para funcionar sem aspas simples ou aspas 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>
Respondeu 12/03/2009 em 02:12
fonte usuário

votos
0

Tente colocar o texto extra dentro do bloco de script do lado do servidor e concatenação.

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

Edit: Eu tenho certeza que você poderia usar apenas aspas fora do bloco de script também.

Respondeu 05/08/2008 em 05:19
fonte usuário

votos
0

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

você pode fazer alguma função corda rudimentar para forçar JavaScript para mudá-la em uma string? Gostar

value = value + ""
Respondeu 05/08/2008 em 05:08
fonte usuário

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