0

我有一组文本字段,当我单击时,文本消失并在模糊时返回(经典表单行为),还有一个按钮,当您单击时,您有一个 jQuery 模态窗口。但是,我希望允许用户使用 jQuery 添加更多的文本字段(和按钮)。问题是,我的用户添加的字段与静态字段的行为方式不同。例如,当我单击按钮(用户添加的按钮)时,模式不会出现。这是我的代码,可以让您更好地了解:

<form method="post" action="payment.php">
    <div id="formulaire">
        <div class="formelements">
            <input type="text" name="from" value="Ex: English(UK)" style="width:100px;margin-right:0px;"
            class="langfield">
            <div class="droparrow" id="arrow"></div>
            <input type="text" name="from" value="Ex: French(FR)" style="width:100px;margin-right:0px;"
            class="langfield">
            <div class="droparrow"></div>
            <input type="text" name="nopages" id="nopages" value="Ex:4">
            <div class="uploadbtn"></div>
        </div>
    </div>
</form>

这是我改变字段行为的javascript代码:

$('.formelements input').each(function () {
    var default_value = this.value;
    $(this).focus(function () {
        if (this.value == default_value) {
            this.value = '';
            $(this).css("font-weight", "bold");
            $(this).css("color", "#323232");
        }
    });
    $(this).blur(function () {
        if (this.value == '') {
            this.value = default_value;
            $(this).css("font-weight", "normal");
            $(this).css("color", "#9e9e9e");
        }
    });
});
/* Modals script start UPDATED AS REQUESTED  */
   $('#formelements').on("click", ".uploadbtn", function () {
    $("#modaldialog").dialog({
    height: 332,
    width: 625,
    modal: true
    });
   });

非常感谢您提前提供的帮助!

4

1 回答 1

1

修复“无模式对话框”问题替换

$(".uploadbtn").click(function () {
    $("#modaldialog").dialog({
        height: 332,
        width: 625,
        modal: true
    });
});

$('.formelements').on("click", ".uploadbtn", function () {
    $("#modaldialog").dialog({
        height: 332,
        width: 625,
        modal: true
    });
});

这使用了适用于新创建的 DOM 元素的.on()函数。您可以替换#formelements为加载时存在的任何父元素 - 可以在此处使用表单

笔记

on()方法至少需要 jQuery 1.7 才能工作......如果你有以前的版本,你可以使用delegate()

$('.formelements').delegate(".uploadbtn", "click", function () {
    $("#modaldialog").dialog({
        height: 332,
        width: 625,
        modal: true
    });
});
于 2012-04-17T14:38:51.817 回答