Dreifache Zitate?Wie trenne ich einen datengebundenen Javascript-String-Parameter in ASP.NET?

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

Frage

Wie trenne ich einen an Javascript-Daten gebundenen Zeichenfolgenparameter in einem Anker ab? OnClick Ereignis?

  • Ich habe ein Ankertag in einem ASP.NET Repeater-Steuerelement.
  • Der OnClick Das Ereignis des Ankers enthält einen Aufruf einer Javascript-Funktion.
  • Die Javascript-Funktion benötigt einen String als Eingabeparameter.
  • Der String-Parameter wird mit einem datengebundenen Wert vom Repeater gefüllt.

Ich brauche die „doppelten Anführungszeichen“ dafür Container.DataItem.
Ich brauche die „einfachen Anführungszeichen“ für die OnClick.

Und ich brauche es immer noch noch ein Trennzeichen (dreifache Anführungszeichen?) für den Eingabezeichenfolgenparameter des Javascript-Funktionsaufrufs.

Da ich keine einfachen Anführungszeichen mehr verwenden kann, wie stelle ich sicher, dass die Javascript-Funktion weiß, dass der Eingabeparameter eine Zeichenfolge und keine Ganzzahl ist?

Ohne die zusätzlichen Anführungszeichen um den Eingabezeichenfolgenparameter geht die Javascript-Funktion davon aus, dass ich eine Ganzzahl übergebe.

Der Anker:

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

und hier ist das 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>
War es hilfreich?

Lösung

Ich hatte kürzlich ein ähnliches Problem und die einzige Möglichkeit, es zu lösen, bestand darin, einfache alte HTML-Codes für einzelne (&#39;) und doppelte Anführungszeichen (&#34;).

Der Quellcode war natürlich völlig durcheinander, aber es hat funktioniert.

Versuchen

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

Andere Tipps

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

Verwendung wie oben.

Ohne die zusätzlichen Anführungszeichen um den Eingabezeichenfolgenparameter geht die Javascript-Funktion davon aus, dass ich eine Ganzzahl übergebe.

Können Sie eine rudimentäre String-Funktion ausführen, um JavaScript dazu zu zwingen, sie in einen String umzuwandeln?Wie

value = value + ""

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

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

Bearbeiten:Ich bin mir ziemlich sicher, dass Sie auch außerhalb des Skriptblocks doppelte Anführungszeichen verwenden könnten.

Übergabe einer Variablen an die Funktion ohne einfache oder doppelte 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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top