我想设置焦点,然后为页面中的多种对象类型选择内容(如果是文本输入类型)。
在我的表单中,我有这些类型的对象:
- 文本
- 复选框
- 广播
以及选择对象(这是一个下拉列表)。
我有一个包含这些对象的表单以及一个提交按钮。提交时,我对字段进行一一验证。如果我发现错误,我想将焦点设置在该对象上,所以我这样做:
在下面的代码中$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函数被放置在一个包含PHP文件中,它根据被检查的元素及其对应的标识符(标识符对应于元素的id
属性)通过引用返回自定义错误消息。如果验证失败,我会调用 ShowError
在页面内显示消息(不是通过弹出窗口),然后我通过调用 SetFocus
将焦点设置在包含错误的元素中功能。
我的问题是SetFocus
功能不起作用。出错的元素没有处理焦点,也没有被选择。
最佳答案
//echo "var elem = document.getElementById($id);";
echo "var elem = document.getElementById('".$id."');";
这可能是你的问题。您传递的 $id 不带引号。
关于javascript - 使用 PHP 设置焦点并选择错误的内容元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576617/