繁体   English   中英

单击提交时如何防止表单内的onchange运行

[英]how to prevent an onchange inside a form from running when clicking submit

我有一个表单,该表单与通过表单内的onchange ajax函数上传的图像一起提交数据。 它们在上载运行时被添加了隐藏标签,但是问题在于,提交表单时上一次图像上载再次运行,这可能是因为表单中包含了onchange函数。

有什么方法可以防止有人单击“提交”按钮时onchange再次运行? 结构是这样的:

<form id="upload_form" action="new.php" method="post" enctype="multipart/form-data" name="ad_create_form">

<input class="upload_button" type="file" name="item_file_upload_1" id="item_file_upload_1"
   onchange="media_sync(ad_create_form, 1, 
   this.form.item_file_upload_1, 
   document.getElementById('item_file_url_1').value, 
   document.getElementById('item_file_embed_1').value, 
   document.getElementById('nb_uploads_1').value, 
   5, 
   '000000015');"  />

<input name="finish" id="finish" value="Add" type="submit" class="btn">

</form>

因此,我需要onchange运行的次数与某人单击上载按钮的次数相同,但不再需要当某人单击提交按钮时的次数。 那可能吗?

这更像是一个集思广益的想法,而不是一个体面的答案,但希望它将为您提供导致解决方案的想法。

简单的想法:创建一个变量,告诉您是否按下了提交按钮,然后在onchange函数中查找它。

例如:

var no_run = false;

function media_sync(data){
    if (!no_run){
        //ajax code goes here - files uploaded
    }
}

$('form').submit(function(){
    no_run = true;
});

请注意,必须在任何函数之外定义no_run var。

jsFiddle一起玩

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM