今回は、実験的なことをやってみます。
POSTで受け取ったデータをチェックして、必須項目の確認をすることもできますが
JavaScriptを使用してPOSTされる前に必須項目の入力をチェックして見ます。
まず、メッセージの部分に文字が入力されていない場合、エラー表示するように
JavaScriptを作成します。
<script language="JavaScript" type="text/javascript"> function checkPost() { bError = false; if (document.post.message.value.length < 1) { ErrorMsg = "メッセージを入力して投稿してください"; } else{ bError = true; } if (bError) { alert(ErrorMsg); } return bError; } </script>
formタグにのnameはpost、inputタグのnameはmessageとしています。
通常のHTMLの場合、<script language="JavaScript" type="text/javascript">〜</script>まで
をHTMLに埋めることで実現できますが、Smartyを使用した場合はできませんでした。
当然といえば当然なのですが、Smartyはデフォルトのデリミタとして {} を使用しています。
JavaScriptでも関数の開始や終了は、 {} を使用します。
この問題を解決するには、三つの方法があるようです。
ひとつは、JavaScript全体を{literal} .. {/literal}で囲みます。
次に、{ldelim} と {rdelim} を使用して {} を置き換えます。
もうひとつは、$left_delimiter と $right_delimiterを使ってデリミタを別のものに変更します。
今回は、{literal} .. {/literal}を使ってJavaScript全体を回避します。
{literal} <script language="JavaScript" type="text/javascript"> function checkPost() { bError = false; if (document.post.message.value.length < 1) { ErrorMsg = "メッセージを入力して投稿してください"; } else{ bError = true; } if (bError) { alert(ErrorMsg); } return bError; } </script> {/literal}
テンプレートとJavaScriptの共存ができるようになりました。
Copyright 1997-2010 BBB All rights reserved.