<script type="text/javascript" defer="defer">

function trim(str) {
return str.replace(/(^\s*)(\s*$)/g, "");
}

function checkLoginInfo() {
document.getElementById("submitChecked").value = (
(trim(adminName) == "") && (trim(adminPass) == "") &&
(trim(adminCaptcha) == "")
) ? ({$emptyAdminName}+", "+{$emptyAdminPass}+", "+{$emptyAdminCaptcha}) : (
(trim(adminName) == "") ? {$emptyAdminName} : (
(trim(adminPass) == "") ? {$emptyAdminPass} : (
(trim(adminCaptcha) == "") ? {$emptyAdminCaptcha} : "")));
}
</script>
为什么错误显示为:
XML解析错误:未组织好 
位置:file:///D:/xampp/php/Smarty/demo/templates/admin-login.tpl 
行:27,列:30: (trim(adminName) == "") && (trim(adminPass) == "") &&
---------------------------------------------------------^javascriptfunctionfilexml

解决方案 »

  1.   

    还有一个问题,trim()在javascript中好像没有相应的函数是吧?我想把trim()函数的定义另外放在一个单独的common.js文件中,如何像PHP那样在其他JS文件中包含common.js并调用函数?
      

  2.   

     {$emptyAdminName} ,{$emptyAdminPass},{$emptyAdminCaptcha} 。
    这些出错,你是后台的 模板变量高转来过
     
      

  3.   

    在调用页面引入common.js文件,然后就可以在页面上调用common.js里的trim()方法
      

  4.   

    引用common.js: <script src="common.js"> </script>  ,在它后面的脚本就能调用 common里的方法,全局变量
     
      

  5.   

    把{$emptyAdminName}这些加上引号"{$emptyAdminName}"..."{$emptyAdminPass}"
      

  6.   

    看着蛋疼按我自己的理解修改并简化了一下,试试看function checkLoginInfo() {
    document.getElementById("submitChecked").value = trim(adminName) == "" && trim(adminPass) == "" && trim(adminCaptcha) == ""? "{$emptyAdminName},{$emptyAdminPass},{$emptyAdminCaptcha}" : 
    trim(adminName) == ""? "{$emptyAdminName}" : 
    trim(adminPass) == ""? "{$emptyAdminPass}" : 
    trim(adminCaptcha) == ""? "{$emptyAdminCaptcha}" : "";
    }
      

  7.   

    各位,依然不行喔,还是提示&&这个有错误:XML解析错误:未组织好 
    位置:file:///D:/xampp/php/Smarty/demo/templates/admin-login.tpl 
    行:22,列:76: document.getElementById("submitChecked").value = trim(adminName) == "" && trim(adminPass) == "" && trim(adminCaptcha) == "" ?
    ------------------------------------------------------------------------------------------------^
      

  8.   

    我的页面代码这样子:<?xml version="1.0" encoding="gbk" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
    <title>{$pageTitle}</title> <style type="text/css">
    /* 页面背景颜色 */
    body {
    color:white;
    }
    /* 空白 */
    div.blank {
    height:8px; line-height:8px; clear:both; visibility:hidden;
    }
    </style>
        
        <script type="text/javascript" defer="defer" src="common.js"></script>
        <script type="text/javascript" defer="defer">
    function checkLoginInfo() {
    document.getElementById("submitChecked").value = trim(adminName) == "" && trim(adminPass) == "" && trim(adminCaptcha) == "" ?
    "{$emptyAdminName}, {$emptyAdminPass}, $emptyAdminCaptcha}" :
    trim(adminName) == "" ? "{$emptyAdminName}" :
    trim(adminPass) == "" ? "{$emptyAdminPass}" :
    trim(adminCaptcha) == "" ? "{$emptyAdminCaptcha}" : "";

    }
    </script>
    </head><body style="background-color:#278296">
    <div class="adminLoginPage">
    <form name="AdminLogin" action="" method="post">
         <table cellpadding="0" cellspacing="0" style="margin-top:5cm" align="center">
             <tr>
                 <td>{$adminName}</td>
                    &nbsp;
                    <td><input name="adminName" type="text" /></td>
                </tr>
                <div class="blank"></div>
                <tr>
                 <td>{$adminPass}</td>
                    &nbsp;
                    <td><input name="adminPass" type="password" size="20" /></td>
                </tr>
                <div class="blank"></div>
                <tr>
                 <td>{$adminCaptcha}</td>
                    &nbsp;
                    <td><input name="adminCaptcha" type="text" /></td>
                </tr>
                <div class="blank"></div>
                <tr>
                    <td colspan="2" style="text-align:right">验证码图片</td>
                </tr>
                <div class="blank"></div>
                <tr>
    <td colspan="2">
                     <input type="checkbox" name="adminRemeber" value="1" />
                        <label name="PleaseRemember">{$rememberMe}</label>
                    </td>
                </tr>
                <tr>
                 <td>&nbsp;</td>
                    <td><input type="submit" value="{$adminLogin}" name="Login" onclick="javascript:checkLoginInfo()" /></td>
                </tr>
                <tr>
                 <td>&nbsp;</td>
                 <td><input type="reset" value="{$adminReset}" name="Reset"/></td>
                </tr>
                <tr>
                 <td><input type="hidden" id="submitChecked" value="" /></td>
                </tr>
            </table>
        </form>
        </div>
    </body>
    </html>
    我这个是模板文件.tpl来的,有没有影响的?
      

  9.   


    <script>
    <!--
    这里放你的js代码 看看
    -->
    <script>
      

  10.   


    我是楼主,怎么会这样呢?把代码放在<!-- -->里面真是就没有错喔请问是怎么一回事?
      

  11.   

    因为你的错误是 xml解析错误
    xml中系统字符不能直接出现在value中 要转义
    很久没用xml了 具体已经忘记了
      

  12.   

    tpl里面,非后台输出形式的{},都要用{literal}{/literal}来保证原样输出要不然 function(){var x = 1;} 你觉得编译后台代码的时候会怎么样?我想,我没记错就是这样子
      

  13.   

    而且,你源文件这里
    "{$emptyAdminName}, {$emptyAdminPass}, $emptyAdminCaptcha}"
    怎么少了一个 {
      

  14.   


    但我改成这样也不行:{literal}
        <script type="text/javascript" defer="defer" src="common.js"></script>
        <script type="text/javascript" defer="defer">
    function checkLoginInfo() {
    document.getElementById("submitChecked").value = trim(adminName) == "" && trim(adminPass) == "" && trim(adminCaptcha) == "" ?
    "{$emptyAdminName}, {$emptyAdminPass}, {$emptyAdminCaptcha}" :
    trim(adminName) == "" ? "{$emptyAdminName}" :
    trim(adminPass) == "" ? "{$emptyAdminPass}" :
    trim(adminCaptcha) == "" ? "{$emptyAdminCaptcha}" : "";

    }
    </script>
        {/literal}
    出现同样的错误:
    XML解析错误:未组织好 
    位置:file:///D:/xampp/php/Smarty/demo/templates/admin-login.tpl 
    行:23,列:76: document.getElementById("submitChecked").value = trim(adminName) == "" && trim(adminPass) == "" && trim(adminCaptcha) == "" ?
    ------------------------------------------------------------------------------------------------^