我正在使用jQuery和iFrame创建一个文件上传脚本。所以,我有一个id =“myform”和target =“myframe”的表单以及一个id =“myframe”和name =“myframe”的框架。当用户选择一个文件时,表单会自动被提交,并且在iframe加载结果后我会提醒他们。问题是我第一次上传文件时得到一个警报,第二次是第二次,第三次上传我得到三个。我的代码就像
$("#myform input").change(function () {
alert("submitting");
$("#myform").submit();
});
$("#myform").submit(function () {
alert(submited);
$("#myframe").load(function () {
alert ("loaded!");
alert ($(this).contents().text());
});
});
我多次获得的提醒是“已加载!”和$(this).contents()。text() 这意味着表单提交一次,iframe“加载”一次以上。我通过Chrome控制台验证了这一点,我的操作文件每次提交只调用一次。为什么会这样?
答案 0 :(得分:6)
您似乎要为$(“#myframe”)添加新的处理程序。每次提交表单时都会加载。
尝试:
$("#myform input").change(function () {
alert("submitting");
$("#myform").submit();
});
$("#myform").submit(function () {
alert(submited);
$("#myframe").unbind('load');
$("#myframe").load(function () {
alert ("loaded!");
alert ($(this).contents().text());
});
});
或:
$("#myform input").change(function () {
alert("submitting");
$("#myform").submit();
});
$("#myframe").load(function () {
alert ("loaded!");
alert ($(this).contents().text());
});
$("#myform").submit(function () {
alert(submited);
});