2017-02-20 24 views
0

Я пытаюсь понять, почему это не работает, я не хочу, чтобы кнопка отправки нажата, она работает, если у меня есть, но вместо этого я использую 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> 
+0

Вы можете изменить ваш пояснительный текст, чтобы мы могли понять это? Что ты хочешь? И что вы получаете вместо этого? –

+0

Если я удаляю 'onchange =" this.form.submit() "из моих входных текстовых полей и вместо этого помещаю кнопку отправки в свою форму, все работает так, как должно, оно получает то, что я хочу в фоновом режиме, и показывает это как AJAX однако, с сообщением onchange submit, он не делает часть AJAX, он просто отправляет форму, как если бы не было AJAX, она перезагружает страницу. @ChrisG –

+0

Я могу это подтвердить; по-видимому, вызывающий 'submit()' в форме пропускает обработчик 'onsubmit'. Решение состоит в том, чтобы обернуть ваш вызов ajax в функцию и поместить вызов в обработчики 'onchange'. https://developer.mozilla.org/en/docs/Web/API/HTMLFormElement/submit –

ответ

2

Используйте это в форме:

<input ... onchange="mySubmit(this.form)" ... > 

Изменить сценарий к этому:

function mySubmit(theForm) { 
    $.ajax({ // create an AJAX call... 
     data: $(theForm).serialize(), // get the form data 
     type: $(theForm).attr('method'), // GET or POST 
     url: $(theForm).attr('action'), // the file to call 
     success: function (response) { // on success.. 
      $('#here').html(response); // update the DIV 
     } 
    }); 
} 
+0

Абсолютно здорово! Спасибо за вашу помощь! –

+0

Ты сделал мой день! Спасибо! –

+0

Блестящий! jQuery, JS и все, что изменилось, и сложно идти в ногу, так что спасибо за ваше время и разрешение! –

 Смежные вопросы

  • Нет связанных вопросов^_^