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