Javascript 使用函数处理程序提交&x27;行不通
我正在努力使用JQuery的.submit()函数。我在按下按钮时调用submit,因为我必须在实际提交表单之前进行一些控制。问题是函数处理程序没有被正确调用。事实上,如果我尝试在没有函数处理程序的情况下调用函数submit,那么它可以工作,但是没有。Javascript 使用函数处理程序提交&x27;行不通,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在努力使用JQuery的.submit()函数。我在按下按钮时调用submit,因为我必须在实际提交表单之前进行一些控制。问题是函数处理程序没有被正确调用。事实上,如果我尝试在没有函数处理程序的情况下调用函数submit,那么它可以工作,但是没有。 $(function(){ $(".subBtn").click(function(){ var data=$(".data-torneo").val(); if(d
$(function(){
$(".subBtn").click(function(){
var data=$(".data-torneo").val();
if(data==""){
$('.error-data').empty().text("Inserisci una data!");
return false;
}
else{
var check=$('input[type=radio][name=r-button]:checked').val();
var xhr = new XMLHttpRequest();
if(check=="fisico"){
var strutt=$('.selected.strutture').text();
if(strutt!==" Seleziona una Struttura"){
xhr.open('GET', '../TournamentControl?action=validateTorneo&datatorneo='+data+'&struttura='+strutt, true);
xhr.send();
}
else{
$('.error-struttura').empty().text("Inserisci una struttura!");
}
}
else if (check=="on-line"){
xhr.open('GET', '../TournamentControl?action=validateTorneo&datatorneo='+data, true);
xhr.send();
}
xhr.onreadystatechange = function() {
if (xhr.status == 200 && xhr.readyState == 4) {
let data = JSON.parse(xhr.responseText);
console.log(data);
var tipo=data['0'];
var errore=data['1'];
if(tipo=="null"){
//$('form').submit();
$('form').submit(function(event){
alert('faccio la submit')
var struttura=$('.selected.strutture').text();
var fisici=$('number-box-tecnici-fisici').text();
if(struttura=="")
struttura="null";
if(isNaN(fisici))
fisici=0;
$.ajax({
url :'TournamentControl?action=saveTorneo',
type:'POST',
data:'nomeTorneo='+$('.nome-torneo')+
'&isHome='+$('input[type=radio][name=toggle]:checked').val()+
'&gioco='+$('.selected.gioco').text()+
'&mode='+$('.selected.mode').text()+
'&organizzato='+$('input[type=radio][name=r-button]:checked').val()+
'&data='+$(".data-torneo").val()+
'&struttura='+struttura+
'&numTecniciRemoto='+$('number-box-tecnici').text()+
'&numTecniciFisici='+fisici
});
})
}
else{
if(tipo=="data"){
$('.error-data').empty().text(errore);
}
else if(tipo=="struttura"){
$('.error-data').empty().text(errore);
}
}
}
}
}
})
})
摆脱对
$('form').submit()的调用。这是在用户下次提交表单时添加事件侦听器
如果您想使用AJAX提交表单,只需在xhr.onreadystatechange
函数中直接调用$.AJAX()
xhr.onreadystatechange = function() {
if (xhr.status == 200 && xhr.readyState == 4) {
let data = JSON.parse(xhr.responseText);
console.log(data);
var tipo = data['0'];
var errore = data['1'];
if (tipo == "null") {
//$('form').submit();
alert('faccio la submit')
var struttura = $('.selected.strutture').text();
var fisici = $('number-box-tecnici-fisici').text();
if (struttura == "")
struttura = "null";
if (isNaN(fisici))
fisici = 0;
$.ajax({
url: 'TournamentControl?action=saveTorneo',
type: 'POST',
data: 'nomeTorneo=' + $('.nome-torneo') +
'&isHome=' + $('input[type=radio][name=toggle]:checked').val() +
'&gioco=' + $('.selected.gioco').text() +
'&mode=' + $('.selected.mode').text() +
'&organizzato=' + $('input[type=radio][name=r-button]:checked').val() +
'&data=' + $(".data-torneo").val() +
'&struttura=' + struttura +
'&numTecniciRemoto=' + $('number-box-tecnici').text() +
'&numTecniciFisici=' + fisici
});
} else {
if (tipo == "data") {
$('.error-data').empty().text(errore);
} else if (tipo == "struttura") {
$('.error-data').empty().text(errore);
}
}
}
}
为什么要使用XMLHttpRequest而不是$.ajax
?如果(tipo==“null”)
正确,是否确定?如果(tipo==null)
,则可能应该是。您对$('form').submit()的调用将创建一个事件处理程序,该处理程序将在用户下次提交表单时运行。那它就不提交表格了。是的,你说得对。我以前从未使用过$.Ajax,这给我带来了麻烦。非常感谢。