проблемы проверки JQuery - PullRequest
0 голосов
/ 26 марта 2010

для пользовательской проверки ввода я написал скрипт:

function cardNumberCheck(value, element) {
        var res = false;
        $.get("/CaseHistories/ValidateCardNumber",
  { caseHistoryId: $('#CaseHistory_Id').val(), cardNumber: $('#CaseHistory_CardNumber').val() },
   function(data) { res = data });
      //alert(res) => works fine return true/false
        return res;
    }

    $.validator.addMethod("cardValidate",
 cardNumberCheck, "invalid");


    if ($('#CaseHistory_CardNumber').is("form *")) { //<= check if elem is in a form
        $('#CaseHistory_CardNumber').rules("add", {
            required: true,
            cardValidate: true,
            messages: {
                required: "*",
                cardValidate: "invalid"
            }
        });
    }

EDIT : требуемое правило работает нормально, но мой метод проверки не отменяет сообщение.
и отправка работает, даже если данные элементов не прошли проверку cardNumberCheck

что здесь не так?

1 Ответ

1 голос
/ 26 марта 2010

Эта порция:

$.get("/CaseHistories/ValidateCardNumber",
  { caseHistoryId: $('#CaseHistory_Id').val(), 
    cardNumber: $('#CaseHistory_CardNumber').val() },
  function(data) { res = data });
    //alert(res) => works fine return true/false
    return res;
}

асинхронный, он возвращает неопределенное значение, потому что эта функция успеха не запускается до тех пор, пока сервер не ответит данными (независимо от того, насколько быстро это происходит, после того, как ваш JavaScript точно включится). Это нормально, потому что предупреждение происходит позже, потому что оно срабатывает, когда данные возвращаются ... после запуска проверочного кода. Чтобы сделать синхронный обратный вызов, вам нужно сделать это вместо:

function cardNumberCheck(value, element) {
  var res;
  $.ajax({
    async: false,
    url: "/CaseHistories/ValidateCardNumber",
    data: { caseHistoryId: $('#CaseHistory_Id').val(), 
            cardNumber: $('#CaseHistory_CardNumber').val() },
    success: function(data) { res = data });
  }
  return res;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...