我想设置焦点,然后为页面中的几个对象类型选择内容(如果是文本输入类型)。
在我的表单中,我有以下类型的对象:
- 文本
- 复选框
- 无线电
以及选择对象(这是一个下拉列表)。
我有一个包含这些对象的表单,还有一个提交按钮。在提交时,我会逐一对字段进行验证。如果我发现一个错误,我想把焦点放在那个物体上,我会这样做:
在下面的代码中,$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没有报价。