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ヘッダーを設定している場合、表示されているもののソース コードが表示されていない可能性があります。Firebug や DOM Inspector など、ライブ DOM を表示するもので試してみてください。

于 2009-03-09T00:09:34.260 に答える
1

PHP のリロード後のコードに checked="checked" および selected="selected" 属性がない場合、それらが選択されているように見える唯一の説明は、ブラウザーがそれらの値を記憶して復元したことです。それはおそらく、残りの動作も説明するでしょう。PHPコードがチェック/選択された属性を正しく生成し、残りは自動的に処理されるようにすることをお勧めします。

于 2009-03-08T23:58:14.617 に答える
0

すべての問題の原因はわかりませんが、JavaScript のデフォルトのフォーム リセット メソッドがどのように機能するかを簡単に説明します。

次のフォームがあるとします。

<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 に答える
0

(どのブラウザ?)

いずれにせよ、この動作 (すべてのコントロールをリセットしない) は設計によるものです。そうしないと、Web でフォームを参照して入力するのは恐ろしい経験になります (ほとんどのフォームは 1 つの間違いでリセットされます)。

ページを常に完全にリセットする更新 (F5 など) と「実際の」更新 (Ctrl-F5) もあります。

于 2009-03-08T23:56:44.040 に答える