JQuery отправить против события Javascript - PullRequest
0 голосов
/ 24 сентября 2010

У меня есть кнопка, которая вызывает функцию javascript после вызова события onclick. Эта функция проверяет мои записи, а затем создает объект ajax для заполнения моей таблицы информации. Кажется, все работает нормально, кроме случаев, когда я добавляю этот код:

    echo "$(document).ready(function() { $(\"#newDate\").submit( function() { 
    ValidateForm('$ID');

    } ); });";

ValidateForm () - это та же функция, что и вызовы событий onclick, за исключением того, что она не работает без пустого предупреждения, отправленного после отправки запроса ajax. Посмотрев вокруг на SO, я обнаружил похожую проблему . Я понимаю проблему в этом конкретном посте, за исключением того, что я делаю, я не могу решить свою проблему. Я попытался переместить отправку в мою анонимную функцию после того, как было установлено успешное состояние готовности, и даже попытался установить мой последний параметр в моем методе open на -false-. (Что я знаю, не является правильным решением, но оно все равно не сработало.

Так почему же все отлично работает с событием onclick, а не с методом отправки jquery?

    function ValidateForm(CQID)
    {

      var dt=document.newDate.uinput;

      if (isDate(dt.value)==false){
        dt.focus();
        return false;
      }

      populateDateTable(dt.value, CQID);

    }



function populateDateTable(dateString, CQID)
{
  //After recieving a date and checking validity populate a table of proceeding dates.
  var xmlhttp = createReq();

  xmlhttp.onreadystatechange=function()
  {

    if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
      document.getElementById("BoxCarCapacityDates").innerHTML= xmlhttp.responseText;
      }
  }

  xmlhttp.open("GET",'populateDateTable.php?dateString='+dateString+'&CQID='+CQID, true);
  xmlhttp.send();



}

Заранее спасибо. (Переключение все в JQuery медленно ..)

echo "$(document).ready($(function() 
{

    $('#newData').click(function()
    {

        var dt=document.newDate.uinput;

         if (isDate(dt.value)==false)
         {
            dt.focus();
            return false;
         }

        $.get(
        {
        url: 'populateDateTable.php',
        data: 'dateString='+dateString+'&CQID='+CQID,
        success: function()
                 {
                    $('#BoxCarCapacityDates').html(response);
                 }
        });


    });
});
); </script>";

Приведенный выше код был представлен в качестве ответа, но, похоже, он не работает вообще.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

Готовы ли вы jQuery'ify свой код? Если это так, попробуйте это.

$(function() {

$('#newData').click(function() {

    var dt=document.newDate.uinput;

        if (isDate(dt.value)==false){
            dt.focus();
            return false;
         }

    $.get({
        url: 'populateDateTable.php',
        data: 'dateString='+dateString+'&CQID='+CQID,
        success: function(){
            $('#BoxCarCapacityDates').html(response);
        }
    });


});

});
0 голосов
/ 24 сентября 2010

Вы изменили свою кнопку на кнопку отправки?Без этого форма не будет отправлена.

Вам также необходимо добавить:

e.preventDefault();

в вашу функцию, которую вы присоединяете к событию отправки формы, чтобыформа не просто ПОСТАВЛЯЕТ (или ПОЛУЧАЕТ) информацию на action URL:

echo "$(document).ready(function() { $(\"#newDate\").submit( function(e) { 
e.preventDefault();
ValidateForm('$ID');

} ); });";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...