Проблема с проверкой JS

#javascript #jquery #css #validation

#javascript #jquery #css #проверка

Вопрос:

Моя функция проверки выглядит следующим образом.

 var fname = $("#fname").val();
var lname = $("#lname").val();

function validate() {
    var isValid = true;
     if (!fname) {
            $("#fname").attr('class', 'invalid');
            isValid=false;
        }

    if (!lname) {
        $("#lname").attr('class', 'invalid');
        isValid=false;
    }
  

Это просто изменяет класс незаполненного поля ввода.

Я знаю, что могу написать else для каждого if и вернуться к умолчанию ( class="valid" ), если пользователь заполнит некоторые из входных данных. Но как я могу создать что-то универсальное для всех входных данных, чтобы вернуть к классу по умолчанию входные данные, которые пользователь заполнил после первой ошибки проверки?

Комментарии:

1. вы можете использовать addClass метод. добавьте invalid класс в object $('your_selector').addClass('invalid') и после проверки просто используйте $('your_selector').removeClass('invalid')

Ответ №1:

В целом это было хорошо! ОДНАКО, почему избыточная обработка в вашем коде? Это добавит ненужный стресс. Поскольку вы, для того, что вы «решили», добавите «допустимый» класс ко ВСЕМ типам ввода text или password, просто добавьте это к фактическому элементу ввода в прямом коде:

 <input class='valid' ..... />
  

Теперь вернемся к вашей первоначальной проверке: почему бы не сделать ее универсальной?:

 function validate(formField) {
    if !formField $('#' formField).removeClass('valid').addClass('invalid');
}
  

Или что-то в этом духе…

Комментарии:

1. Я уже добавил допустимый класс прочитайте мой ответ еще раз. Это функция нажатия клавиши «добавит «допустимый» класс ко ВСЕМУ тексту ввода или паролю» — она добавит допустимый класс только тогда, когда пользователь нажимает клавишу

2. Одним из способов было бы: form …. onSubmit=’validateIt(this);’ и проверка того, что это будет проходить через элементы в форме и отправлять каждый элемент для проверки (item). Пример: функция validateIt(FormID) { для каждого … проверка (элемента) … }

3. if !formfield Бит синтаксически недопустим. Будет ли удаление этих двух токенов ближе к тому, что вы пытаетесь сделать.

4. Что вы исправили? ПОЭТОМУ должна быть возможность просто вычеркнуть то, что исправляют так называемые «редакторы». Теперь я не знаю, насколько я могу доверять вам (не то чтобы я не доверяю), что вы исправили … проблему, которой не существовало… в течение 13 дней.

Ответ №2:

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

 function validate() {
  // Get the current form input state.
  var fname = $("#fname");
  var lname = $("#lname");

  // Assume everything valid until proven otherwise.
  var isValid = true;
  fname.attr('class', 'valid');
  lname.attr('class', 'valid');

  if (!fname.val()) {
    fname.attr('class', 'invalid');
    isValid=false;
  }

  if (!lname.val()) {
    lname.attr('class', 'invalid');
    isValid=false;
  }

  return isValid;
}
  

Ответ №3:

ОК. Я нашел способ

   $('input[type="text"],input[type="password"]').keypress(function () {
        $(this).attr('class', 'valid');
});