Сообщение об ошибке проверки jQuery не очищается после пользовательской проверки - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь добавить проверку на дату истечения срока действия кредитной карты, чтобы убедиться, что месяц и год заполнены, но у них есть только одна метка для выделения, поэтому она должна быть в одном правиле проверки.

Код в этом jsfiddle почти работает, но если вы выберете месяц, а затем год, при выборе раскрывающегося списка появится сообщение об ошибке, но оно не исчезнет при нажатии на год.

https://jsfiddle.net/47auhvtz/

В моей собственной версии этого кода он удаляет красный стиль, но не текст.

Это сообщение об ошибке 1]

Превращается в следующее: enter image description here

Чего здесь не хватает?Есть ли лучший способ сделать это?

Код показан ниже:

HTML

<form id="frmCreateAgreement" class="form-horizontal" data-toggle="validate" role="form">
  <div class="form-group col-sm-12">
      <label for="selCardExpiryDate" class="control-label col-lg-5 col-md-3 col-sm-4">Expiry Date</label>
      <div class="card-date">
          <div class="col-lg-3 col-md-4 col-sm-4">
              <select id="selCardExpiryMonth" name="CardExpiryMonth" class="form-control card-month">
                  <option value="" selected>Month</option>
                  <option value="01">01</option>
                  <option value="02">02</option>
                  <option value="03">03</option>
              </select>
          </div>
          <div class="col-lg-4 col-md-5 col-sm-4">
              <select id="selCardExpiryYear" class="form-control card-year">
                  <option value="" selected>Year</option>
                  <option value="2018">2018</option>
                  <option value="2018">2019</option>
                  <option value="2018">2020</option>                
              </select>
          </div>
      </div>    
  </div>
</form>

Javascript

$(document).ready(function () {

    jQuery.validator.addMethod("cardDate", function (value, element) {
    var cardDate = $(element).parents('.card-date');
    var cardMonth = cardDate.find('.card-month').val();
    var cardYear = cardDate.find('.card-year').val();
    return this.optional(element) || (cardMonth.length > 0 && cardYear.length > 0);        
}, function (params, element) {
        return 'Month and year required'
});


$('#frmCreateAgreement').validate({
    rules: {
        CardExpiryMonth: {
            required: true,
            cardDate: true
        }
    }        
});

});

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