使用PHP设置焦点并在出现错误时选择内容元素


Set focus and select content element on error using PHP

我想设置焦点,然后为页面中的几个对象类型选择内容(如果是文本输入类型)。

在我的表单中,我有以下类型的对象:

  • 文本
  • 复选框
  • 无线电

以及选择对象(这是一个下拉列表)。

我有一个包含这些对象的表单,还有一个提交按钮。在提交时,我会逐一对字段进行验证。如果我发现一个错误,我想把焦点放在那个物体上,我会这样做:

在下面的代码中,$id是对象的标识符,即id属性。我的PHP页面的代码片段:

<?php
    (...)
    function SetFocus($id)
    {
        echo "Setting focus to: " . $id . "#";
        echo "<script type='text/javascript'>";
        echo "var elem = document.getElementById($id);";
        echo "elem.focus();";
        echo "elem.select();";
        echo "</script>";
    }
    (...)
?>
<form ........>
       <input name="personName" type="text" id="personName">
       (...)
        <?php               
                (...)
                $errMsg = "";
                $id = "";
                if (!Validate($errMsg, $id))
                {
                    ShowError($errMsg);
                    SetFocus($id);
                }
                (...)
        ?>
   (...)
</form>

Validate函数被放在一个include PHP文件中,它根据被检查的元素及其对应的标识符(标识符对应于元素的id属性),通过引用返回自定义错误消息。如果验证不合格,则我调用ShowError在页面中显示消息(而不是通过弹出窗口),然后通过调用SetFocus函数在包含错误的元素中设置焦点。

我的问题是SetFocus函数不起作用。出现错误的元素没有处理焦点,也没有选择。

//echo "var elem = document.getElementById($id);";
echo "var elem = document.getElementById('".$id."');";

这可能是你的问题。您传递的$id没有报价。