2010-12-03 6 views
1

Ich versuche, diese jQuery-Funktion mit PHP zu echo. Grundsätzlich, wenn das Skript erkennt, dass ein Feld eines Formulars nicht ausgefüllt ist, wird es dies widerspiegeln und das Eingabefeld rot werden lassen.Echo einer JQuery-Animationsfunktion mit PHP

Es funktioniert gut, wenn es nicht echoed ist.

echo(' 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(\'input\').animate({backgroundColor:\"#F00\"},200); 
    }); 
</script> 
'); 

irgendwelche ideen?

+4

Fragen Sie nicht, warum es nicht funktioniert. Schauen Sie sich an, was es ausgibt und fragen Sie, warum das anders ist als der Code, der funktioniert. Wenn Sie PHP ausführen und die generierte Ausgabe betrachten, wird der Grund, warum es nicht funktioniert, ziemlich offensichtlich. – Quentin

+0

Wahrscheinlich wird das Echo nicht ausgeführt. Stellen Sie sicher, dass dies in einer PHP-Datei in den entsprechenden Tags (

+0

@Stefan - die Ausgabe von ausgeführt, dass Echo hat große, fett JS-Syntaxfehler. – Quentin

Antwort

2

Ich glaube nicht, dass Sie Ihre Anführungszeichen entziehen müssen, wenn die Zeichenfolge in einfachen Anführungszeichen steht. PHP analysiert die Zeichenfolge nicht, sie wird buchstäblich ausgegeben.

+0

OH das ist es. Dies ist das erste Mal, dass ich Fluchten benutzt habe. –

0

Sie sollten nicht \" dort verwenden, nur "

1

Sie es auf die Escape-Zeichenfolge über tun. Um es einfach zu halten, verwenden Sie einfach einfache Anführungszeichen um die widerholte Zeichenfolge und verwenden Sie doppelte Anführungszeichen darin. Etwas wie:

echo(' 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("input").animate({backgroundColor: "#F00"}, 200); 
    }); 
</script> 
'); 

Wenn Sie das echo Sachen ing, gibt es in der Tat einige Fälle, wenn Sie die Anführungszeichen entkommen müssen, aber die meisten der Zeit können Sie einfach weg mit ihm durch verschiedene Arten von Anführungszeichen. Zum Beispiel werde ich es nie bekommen, warum Menschen immer noch wie etwas tun:

echo "<input type=\"text\" name=\"username\">"; 

im Gegensatz zu

echo '<input type="text" name="username">'; 

, die Ihr Leben viel einfacher machen, wenn Sie es ändern müssen.

Hoffe, das hilft!

+0

Also einfache und doppelte Anführungszeichen sind austauschbar? –

+0

Nicht unbedingt. Nehmen Sie zum Beispiel proEvil Beispiel. Wenn Sie am Ende des Strings ein '\ n' hinzufügen würden, würden Sie es in einfache Anführungszeichen einschließen, was im Gegensatz zu doppelten Anführungszeichen, die es wie beabsichtigt ausgeben würden (d. H. Ein neues Zeilenzeichen), wörtlich ausgegeben würde. –

-1

ich habe nicht zu testen, aber versuchen, dass:

$nl = "\n"; 
echo '<script type="text/javascript">'.$nl; 
echo ' $(document).ready(function() {'.$nl; 
echo '  $("input").animate({backgroundColor:"#F00"},200);'.$nl; 
echo ' });'.$nl; 
echo '</script>'.$nl; 

die $ nl = "\ n" nur für Zeilenumbruch ist (ich ziehe in Hochkomma echos zu verwenden, so haben php nicht die analysieren Inhalt - nur Echo aus).

+1

Ich habe Mitleid mit dem Dummkopf, der Code so pflegen muss ... –

0

Außerdem: ein Hex-color-Wert ist kein numerischer Wert, den Sie für animate() verwenden können. Dadurch wird der Fehler behoben, indem die Backslashes aus den doublequotes entfernt werden, aber Ihre Animation würde keinen Effekt zeigen.