1

私は基本的に次のように一時的にパスワード入力を偽造する入力を作成しています:

var fakeId = currentElement.attr("id") + "Fake";

var fakePasswordInput = $("<input>",
{
    id: fakeId,
    val: value,
    type: "text",
    class: cssClass
});

currentElement.after(fakePasswordInput);

私の問題はこれがいつ起こるかです:

        currentElement.blur(function () {
            if ($(this).val() == "") {
                $(this).hide();
                var id = $(this).attr("id");
                var val = elements["#" + id];
                // have NO idea why, but it loses the CSS class AND the value.
                $("#" + id + "Fake").show();
            }
        });

最後の行$("#" + id + "Fake").show();は要素をうまく表示しますが、CSSクラスとその中にあった値の両方を失います。これを修正するには、次のようにします。

$("#" + id + "Fake").val(val).addClass(cssClass).show();

それは私が熱心ではないハックです。では、動的に生成されたHTML要素を非表示にしてから表示すると、その属性が失われるのはなぜですか?(これはChrome / FF / IEで発生します)

編集

これはすべて単一の関数で定義されます。はcssClass、次のように最上部で宣言されています。

function formBlur(elements) {
    var cssClass = "default_text_input";
4

2 に答える 2

0

val 引数を value に変更してみてください。

var fakePasswordInput = $("<input/>",
{
    id: fakeId,
    value: value,
    type: "text",
    class: cssClass
});

クラス引数は正しいようです。値の引数が原因で機能していない可能性があります。

于 2012-08-06T10:35:01.357 に答える
0

これを試して

var fakePasswordInput = $("<input/>",
{
    id: fakeId,
    val: value,
    type: "text",
    class: cssClass
});


この種の構文を使用してその場で作成するときは、おそらく入力タグを閉じる必要があります

于 2012-08-06T10:08:42.973 に答える