Я пытаюсь понять, почему это не работает, я не хочу, чтобы кнопка отправки нажата, она работает, если у меня есть, но вместо этого я использую onchange="this.form.submit()"
и что сообщения форма, как обычно, а не стиль AJAX, я не кодировал часть ajax, я нашел его и заработал для своей ситуации, но насколько я знаю $('#ajaxform').submit(function()
, submit отправляет? Почему не onchange="this.form.submit()"
и <input type="submit" />
такой же тип отправки? Что мне не хватает?Отправить AJAX Post onchange
<form method="post" action="~/getAJAX.cshtml" id="ajaxform" name="form">
@* -------- Div to hold form elements -------- *@
<div class="reportDateDiv">
@* -------- Text --------- *@
<a class="blackColor fSize18 RPtxt">Reporting Period</a>
@* -------- Start day box -------- *@
<input type="text" name="inputDate" spellcheck="false" class="datepickerS metricDateTextbox capitalFirst"
onchange="this.form.submit()" value="@inputDate" autocomplete="off" placeholder="@placeholderStartDate.ToString("MMM d, yyyy")" readonly="readonly" />
@* -------- Text --------- *@
<a class="blackColor fSize16 RPtxt RPtxtTo">to</a>
@* -------- End day box --------- *@
<input type="text" name="endDate" spellcheck="false" class="datepickerE metricDateTextbox capitalFirst"
onchange="this.form.submit()" value="@endDate" autocomplete="off" placeholder="@noEndDate.ToString("MMM d, yyyy")" readonly="readonly" />
</div>
</form>
<script type="text/javascript">
$('#ajaxform').submit(function() { // catch the form's submit event
$.ajax({ // create an AJAX call...
data: $(this).serialize(), // get the form data
type: $(this).attr('method'), // GET or POST
url: $(this).attr('action'), // the file to call
success: function (response) { // on success..
$('#here').html(response); // update the DIV
}
});
return false; // cancel original event to prevent form submitting
});
</script>
Вы можете изменить ваш пояснительный текст, чтобы мы могли понять это? Что ты хочешь? И что вы получаете вместо этого? –
Если я удаляю 'onchange =" this.form.submit() "из моих входных текстовых полей и вместо этого помещаю кнопку отправки в свою форму, все работает так, как должно, оно получает то, что я хочу в фоновом режиме, и показывает это как AJAX однако, с сообщением onchange submit, он не делает часть AJAX, он просто отправляет форму, как если бы не было AJAX, она перезагружает страницу. @ChrisG –
Я могу это подтвердить; по-видимому, вызывающий 'submit()' в форме пропускает обработчик 'onsubmit'. Решение состоит в том, чтобы обернуть ваш вызов ajax в функцию и поместить вызов в обработчики 'onchange'. https://developer.mozilla.org/en/docs/Web/API/HTMLFormElement/submit –