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

时间:2015-07-27 17:26:48

标签: javascript jquery

我有一个表单提交数据以及使用表单内的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运行多次,就像有人点击上传按钮一样,但是当有人点击提交按钮时就不再需要了。这可能吗?

1 个答案:

答案 0 :(得分:1)

这更像是一个头脑风暴的想法,而不是一个体面的答案,但希望它会给你带来解决方案的想法。

简单的想法:创建一个var,告诉你是否按下了提交按钮,并在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 to play with