Triple Quotes? How do I delimit a databound Javasc

2019-04-03 02:04发布

How do I delimit a Javascript data-bound string parameter in an anchor OnClick event?

  • I have an anchor tag in an ASP.NET Repeater control.
  • The OnClick event of the anchor contains a call to a Javascript function.
  • The Javascript function takes a string for its input parameter.
  • The string parameter is populated with a data-bound value from the Repeater.

I need the "double quotes" for the Container.DataItem.
I need the 'single quotes' for the OnClick.

And I still need one more delimiter (triple quotes?) for the input string parameter of the Javascript function call.

Since I can't use 'single quotes' again, how do I ensure the Javascript function knows the input parameter is a string and not an integer?

Without the extra quotes around the input string parameter, the Javascript function thinks I'm passing in an integer.

The anchor:

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

and here is the 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>

5条回答
别忘想泡老子
2楼-- · 2019-04-03 02:10

Try putting the extra text inside the server-side script block and concatenating.

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

Edit: I'm pretty sure you could just use double quotes outside the script block as well.

查看更多
Emotional °昔
3楼-- · 2019-04-03 02:16

Without the extra quotes around the input string parameter, the Javascript function thinks I'm passing in an integer.

Can you do some rudimentary string function to force JavaScript into changing it into a string? Like

value = value + ""
查看更多
Explosion°爆炸
4楼-- · 2019-04-03 02:21

Passing variable to function without single quote or double quote

<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>
查看更多
The star\"
5楼-- · 2019-04-03 02:22
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '

Use like above.

查看更多
Lonely孤独者°
6楼-- · 2019-04-03 02:29

I had recently similar problem and the only way to solve it was to use plain old HTML codes for single (&#39;) and double quotes (&#34;).

Source code was total mess of course but it worked.

Try

<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>
查看更多
登录 后发表回答