动态创建的文本字段的不同行为

时间:2012-04-17 14:35:23

标签: javascript jquery css

我有一组文本字段,当我点击时,文本消失并在模糊时返回(经典表单行为),以及一个按钮,当您单击时,您有一个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
    });
   });

非常感谢您的帮助!!

1 个答案:

答案 0 :(得分: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
    });
});

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

注意

on()方法至少需要jQuery 1.7才能运行...如果您有以前的版本,则可以使用delegate()

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