Citações triplas?Como delimito um parâmetro de string Javascript de ligação de dados no ASP.NET?
-
08-06-2019 - |
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>
Solução
Recentemente, tive um problema semelhante e a única maneira de resolvê-lo foi usar códigos HTML simples e antigos para single ('
) e aspas duplas ("
).
O código-fonte estava uma bagunça total, é claro, mas funcionou.
Tentar
<a id="aShowHide" onclick='ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode") %>");'>Show/Hide</a>
ou
<a id="aShowHide" onclick='ToggleDisplay('<%# DataBinder.Eval(Container.DataItem, "JobCode") %>');'>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 = "12";
var y = "fmo";
hello(x,y)">test</a>
</body>
</html>