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

尝试这个

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

您可能应该
在使用这种语法动态创建输入标签时关闭它

于 2012-08-06T10:08:42.973 回答
0

请尝试将 val 参数更改为 value。

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

类论点似乎是正确的。可能是由于 value 参数而无法正常工作。

于 2012-08-06T10:35:01.357 回答