私は基本的に次のように一時的にパスワード入力を偽造する入力を作成しています:
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";