2

使用 XHTML 1.1

我在 php 中管理了这个登录页面。它包含几个复选框、单选按钮和一个下拉列表。

它背后有很多表单检查,如果没有检查出来,页面会重新加载,所有值都会被填充回原位,除了密码。

这意味着已选择的 和 元素被重新<select>选择<input type="radio"<input type="checkbox"

然而,当我查看源代码时,缺少checked="checked"和部分。selected="selected"但是看看重新加载的页面是如何选择它们的,它们肯定已经实现了。

然而,当我点击我的<input type="reset"按钮时,什么也没有发生。不要被取消选中。

有趣的是,当我选择其他一些复选框、单选按钮并更改选择时,重置确实有效,但仅适用于新单击的复选框和单选按钮。

更奇怪的是,当我单击重置时,单选按钮、复选框和选择不会自行清除,它们会跳回到 PHP 强制页面重新加载时选中或选中的那个。

这里发生了什么?

顺便用firefox,现在检查IE。

编辑: IE 同样的问题。

4

4 回答 4

2

如果您使用“查看源代码”并且脚本设置了激进no-cache的标题,那么您可能看不到所显示内容的源代码。在显示实时 DOM 的东西中尝试它,例如 Firebug 或 DOM Inspector。

于 2009-03-09T00:09:34.260 回答
1

如果您在 PHP 重新加载后的代码缺少 checked="checked" 和 selected="selected" 属性,那么它们看起来被选中的唯一解释是您的浏览器记住了它们的值并恢复了它们。这可能也解释了其余的行为。我建议确保 PHP 代码正确生成检查/选择的属性,其余的应该自己处理。

于 2009-03-08T23:58:14.617 回答
0

(哪个浏览器?)

无论如何,这种行为(不重置所有控件)是设计使然,否则在 Web 中浏览和填写表单将是一种可怕的体验(大多数表单被一个错误重置)。

还有刷新(如 F5)和“真正的”刷新(Ctrl-F5),它们总是会完全重置页面。

于 2009-03-08T23:56:44.040 回答
0

我不确定您所有问题的原因,但我将简要介绍一下 javascripts 默认表单重置方法的工作原理。

假设您有以下表格:

<form id="myForm>
    <input type="text" name="textField1" value="" />
    <input type="text" name="textField2" value="test1" />
    <input type="text" name="textField3" value="test2" />

    <input type="checkbox" name="checkbox1" value="box1" />
    <input type="checkbox" name="checkbox2" value="box2" checked />
</form>

在 textField1 中放置 Foo 在 textField2 中放置 Bar 在 textField2 中放置 Baz

然后您选中两个复选框。然后重置表格

myForm.reset();

表单字段现在将具有以下内容:

textField1="" textField2="test1" textField3="test2"

复选框1=未选中复选框2=已选中

发生的情况是 reset 方法没有“清除”表单,它将它设置回表单的所有默认值。

希望这会有所帮助。

于 2009-03-09T00:22:45.820 回答