0

您好我正在使用下面的代码通过单击创建表单按钮在 div 中动态创建表单

$('#'+id).append('<div id="FileUpload"><fieldset><legend>Upload File To Iseries Server</legend><form id="FileUploadForm" action="" method="post" enctype="multipart/form-data"><label for="fileName">Select File: </label><input id="fileName" type="file" name="files" size="30" multiple /><br/><input type="submit" name="UploadFile" value="Upload" id="FileUploadButton"/></form></fieldset></div>');

我想获取输入框的值,所以我添加了代码:

$("input[name=UploadFile]").live("click",function(){
            $("input[name=files]").change(function() {
                alert($(this).val());   
            });

        });

现在的问题是每次我点击创建表单按钮时,它都会直接调用我上面提到的点击函数,然后显示表单。现在,当我单击上传按钮时,它不会向我显示警报消息。它现在正在调试中的单击事件中。请帮帮我!帮助表示赞赏!

4

1 回答 1

0

两者"input[name=files]""input[name=UploadFile]"都是动态创建的。您应该为它们创建委托的事件处理程序。

您的代码的另一个问题是"input[name=files]"每次"input[name=UploadFile]"单击时都添加事件处理程序,这可能会导致添加多个事件处理程序的问题。

这一行:$("input[name=files]").change(function() {只是添加事件处理程序,这就是你看不到警报的原因

也尝试$.on而不是 live 因为 live 已被弃用:

$(document).on("change","input[name=files]",function(){
    alert($(this).val());  
});

$(document).on("click","input[name=UploadFile]",function(){
            $("input[name=files]").trigger("change"); //trigger event instead of add event handler like in your code.
});
于 2013-12-28T09:06:09.820 回答