2011-01-07 2 views
0

J'essaie de cacher un message d'erreur div en utilisant une fonction javascript setTimeout après un certain temps, mais il me donne des erreurs que c'est une mauvaise syntaxe smarty, je n'ai jamais utilisé Smarty avant donc je voudrais vraiment l'apprécier si quelqu'un peut me aider à accélérer avec cette syntaxeMasquage d'un message d'erreur div avec setTimeout ne fonctionne pas en utilisant Smarty

Mon code est le suivant

{if $error_message != ""} 
    <script type="text/javascript"> 
    setTimeout(function(){$('error').hide(); }, 1000); 
    </script> 
    <div id="error" class='error_message'> 
    {$error_message} 
    </div> 
{/if} 

Merci à l'avance

+0

peut vous signaler l'erreur réelle que vous obtenez? – kieran

+0

Le message d'erreur que je reçois est le suivant Kieran Erreur fatale: Erreur Smarty: [dans C: /xampp/htdocs/www_google_ads_integration//modules/order_checkout/tpl/order_checkout.tpl ligne 21]: erreur de syntaxe: balise non reconnue: $ ('erreur'). hide(); (Smarty_Compiler.class.php, ligne 446) dans C: \ xampp \ htdocs \ www_google_ads_integration \ lib \ smarty-2.6.26 \ libs \ Smarty.class.php à la ligne 1094 –

Répondre

1

Si vous voulez utiliser Smarty réservés des caractères tels que {et} ailleurs dans le modèle comme avec JS inline, vous devez utiliser le littéral-tag pour y échapper. En outre, si vous avez des espaces autour, smarty se rend compte que ce n'est pas une étiquette intelligente et l'ignore.

Voir http://www.smarty.net/docs/en/language.function.literal.tpl

2

Vous aurez besoin d'utiliser literal tag Smarty pour javascript. Il dit à smarty compiler de ne pas exécuter le code et de le garder tel quel.

http://www.smarty.net/docsv2/en/language.function.literal

pour votre scenerio, essayer,

{literal} 
    <script type="text/javascript"> 
     setTimeout(function(){$('error').hide(); }, 1000); 
     </script> 
{/literal} 
+0

Il y a aussi '{ldelim}' et le (inutile) '{rdelim}'. –

+0

Salut Nik, J'ai utilisé la balise littérale et il a supprimé le message d'erreur mais l'objectif initial n'est pas encore accompli car il ne veut pas cacher la div du tout .. :(, une idée de ce qui pourrait mal se passer ? –

+0

@Donald: Comme 'error' est id, vous devriez utiliser $ ('# error'). Hide(), et pas $ ('error'). Hide(); – Nik

Questions connexes