JQuery change(function()) 提交表单两次


JQuery change(function()) submitting form twice

有一个用PHP编写的"创建配置文件"页面。有 2 个表单和 1 个 JQuery 函数。

<script type="text/javascript" >
    $(document).ready(function(){   
        $('#photoimg').change(function(){ 
            $("#imageform").ajaxForm({
                        target: '#preview'
            }).submit();
        });
    }); 
</script>

这是图像显示的位置:

<div id='preview'></div>

表格-1:(用于上传个人资料图片)

<form id="imageform" method="post" enctype="multipart/form-data" action='ajaximage.php'>
    <input name="photoimg" id="photoimg" type="file" />
</form>

表格-2:(用于其他文本信息)

<form class="form-signin" name="reg" role="form" action="process.php" method="post">
    .... some normal input values ....
   <input type="submit" value="Submit">
</form>

问题:

当我单击"photoimg"浏览图像文件并选择时,JQuery"onchange"工作正常,并且"图像形式"正在提交,并且"ajaximage.php"被称为上传的图像正在DIV"预览"的主页上完美显示,而无需刷新主页。这部分工作得很好。

现在,如果我单击表单"reg"的"提交"按钮,而不是转到"处理.php",它将再次转到"ajaximage.php"。这就是问题所在。

如果我刷新主页,然后单击表单"reg"的"提交"按钮,那么它将转到"处理.php"。

不确定我的问题是否清楚。提前感谢您的时间和帮助。

添加"ajaximage.php"代码供您参考:

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
 .......
  do all the image upload stuff & update database
 .......
 echo "<img src='uploads/".$actual_image_name."'>";
}

可能的演练。

  1. 检查更新目标div 后是否所有 html 标记都已正确关闭。
  2. 尝试在完成请求后将焦点从文件元素中移开。
  3. 检查控制台上的 jQuery 错误。
  4. 检查某些 ID 是否不冲突。