Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在表单提交之前更改表单的val_Jquery - Fatal编程技术网

Jquery 在表单提交之前更改表单的val

Jquery 在表单提交之前更改表单的val,jquery,Jquery,我有一个函数,它从提交表单#uploadform开始,即enctype=“multipart/form data”。问题是,当提交此表单时,我运行另一个函数,向文档发送post请求并接收信息。我希望此信息与初始表单#uploadform一起提交,但此post调用似乎发生在表单提交之后,因此不会添加值#进度键已成功添加到表单中,因为它发生在post调用之前。有人对此有什么想法吗 $('#uploadform').submit(function(){ beginUpload(); } fun

我有一个函数,它从提交表单
#uploadform
开始,即
enctype=“multipart/form data”
。问题是,当提交此表单时,我运行另一个函数,向文档发送post请求并接收信息。我希望此信息与初始表单
#uploadform
一起提交,但此post调用似乎发生在表单提交之后,因此不会添加值<代码>#进度键已成功添加到表单中,因为它发生在post调用之前。有人对此有什么想法吗

$('#uploadform').submit(function(){

beginUpload();

}


function beginUpload() {
$('#progress_key').val(rand_id);

$.ajax({
type: "POST",
url: "progressbar/initial.php",
data: 'data,
dataType: 'json',
success: function(response, statusText) {

if(response.error == '') {  

vid_id=response.vid_id;
file_name=response.file_name;

$('#file_name').val(vid_id);
$('#vid_id').val(file_name);
}
}
});
}

要做到这一点,并避免发出同步ajax请求,您可以从提交处理程序返回false,如下所示:

$('#uploadform').submit(function(){
    beginUpload();
    $(this).unbind('submit');
    return false;
}
$('#uploadform').submit();
然后在ajax调用的成功函数结束时提交,如下所示:

$('#uploadform').submit(function(){
    beginUpload();
    $(this).unbind('submit');
    return false;
}
$('#uploadform').submit();

要做到这一点,并避免发出同步ajax请求,您可以从提交处理程序返回false,如下所示:

$('#uploadform').submit(function(){
    beginUpload();
    $(this).unbind('submit');
    return false;
}
$('#uploadform').submit();
然后在ajax调用的成功函数结束时提交,如下所示:

$('#uploadform').submit(function(){
    beginUpload();
    $(this).unbind('submit');
    return false;
}
$('#uploadform').submit();

您必须调用表单元素的
submit()
方法,而不是jQuery方法,因为这将再次调用处理程序。例如,
document.getElementById('uploadform').submit()
@Phil jQuery docs说这种形式的提交调用.trigger而不是.bind,因此它与调用表单的提交相同method@Phil是的
submit()
trigger('submit')
的缩写形式。注意
trigger()
triggerHandler()
之间的区别
trigger()
也将尝试对该事件执行默认浏览器操作,在本例中,提交表单。@Phil请参阅以下内容:@Phil-Hmm。。。jQuery似乎认为默认浏览器操作调用onsubmit事件处理程序来决定是否提交它。谢谢你指出并证明了这一点,哈哈。抱歉怀疑:P我编辑了我的帖子。您必须调用表单元素的
submit()
方法,而不是jQuery方法,因为这将再次调用处理程序。例如,
document.getElementById('uploadform').submit()
@Phil jQuery docs说这种形式的提交调用.trigger而不是.bind,因此它与调用表单的提交相同method@Phil是的
submit()
trigger('submit')
的缩写形式。注意
trigger()
triggerHandler()
之间的区别
trigger()
也将尝试对该事件执行默认浏览器操作,在本例中,提交表单。@Phil请参阅以下内容:@Phil-Hmm。。。jQuery似乎认为默认浏览器操作调用onsubmit事件处理程序来决定是否提交它。谢谢你指出并证明了这一点,哈哈。抱歉怀疑:P我编辑了我的帖子。