47 Stimmen

Dreifache Zitate? Wie kann ich einen datengebundenen Javascript-Stringparameter in ASP.NET abgrenzen?

Wie kann ich einen datengebundenen Javascript-String-Parameter in einem Anker abgrenzen? OnClick Veranstaltung?

  • Ich habe ein Anker-Tag in einem ASP.NET Repeater-Steuerelement.
  • El OnClick Ereignis des Ankers enthält einen Aufruf einer Javascript-Funktion.
  • Die Javascript-Funktion benötigt eine Zeichenkette als Eingabeparameter.
  • Der String-Parameter wird mit einem datengebundenen Wert aus dem Repeater bestückt.

Ich brauche die "doppelten Anführungszeichen" für die Container.DataItem .
Ich brauche die 'einfachen Anführungszeichen' für die OnClick .

Und ich brauche noch ein weiteres Begrenzungszeichen (dreifache Anführungszeichen?) für den Eingabe-String-Parameter des Javascript-Funktionsaufrufs.

Da ich nicht wieder "einfache Anführungszeichen" verwenden kann, wie stelle ich sicher, dass die Javascript-Funktion weiß, dass der Eingabeparameter eine Zeichenfolge und keine ganze Zahl ist?

Ohne die zusätzlichen Anführungszeichen um den Eingabe-String-Parameter denkt die Javascript-Funktion, dass ich eine ganze Zahl eingebe.

Der Anker:

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

Und das ist mein 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>

32voto

lubos hasko Punkte 24316

Ich hatte vor kurzem ein ähnliches Problem, und der einzige Weg, es zu lösen, war die Verwendung von einfachen HTML-Codes für einzelne ( &#39; ) und doppelte Anführungszeichen ( &#34; ).

Der Quellcode war natürlich ein totales Chaos, aber es hat funktioniert.

Versuchen Sie

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

oder

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

6voto

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

Verwendung wie oben.

3voto

Grant Punkte 11649

Ohne die zusätzlichen Anführungszeichen um den Eingabe-String-Parameter denkt die Javascript-Funktion, dass ich eine ganze Zahl eingebe.

Können Sie einige rudimentäre String-Funktion zu tun, um JavaScript in Umwandlung in eine Zeichenfolge zu zwingen? Zum Beispiel

value = value + ""

1voto

Shawn Punkte 18777

Versuchen Sie, den zusätzlichen Text in den serverseitigen Skriptblock einzufügen und zu verketten.

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

Edit: Ich bin mir ziemlich sicher, dass man auch einfach doppelte Anführungszeichen außerhalb des Skriptblocks verwenden kann.

1voto

Übergabe einer Variablen an eine Funktion ohne einfaches oder doppeltes Anführungszeichen

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X