2017-01-06 4 views
1

Я делаю некоторые проверки правильности формы и выделения областей, которые пользователь все еще должен заполнить. Я добавляю класс в набор полей с использованием метода .addClass, который меняет рамку поля вокруг набора полей к красному. Когда пользователь нажимает кнопку отправки, я запускаю функцию, которая сначала очищает классы css проверки валидации и перечитывает форму, чтобы увидеть, имеет ли пользователь правильный ввод. При вызове метода removeClass() поле рамки не возвращается к исходному цвету. Он остается красным.jQuery .removeClass() не работает должным образом

//Add 
$('#jdeABFieldSet').addClass("validatorBox"); 
//Remove 
$(".validatorBox").removeClass("validatorBox"); 

Я также попытался

$("#jdeABFieldSet").removeAttr('class'); 
$("#jdeABFieldSet").attr("class", ""); 

CSS

.validatorBox{ 
    border-color: red; 
} 

Полный код ниже.

//This is where the class is added to change the border color to red. 
switch($('#tbJDEName').val().length === 0 || 
       $('#tbMailingAddress').val().length === 0 || 
       $('#tbCity').val().length === 0 || 
       $('#tbState').val().length === 0 || 
       $('#tbZip').val().length === 0 || 
       $('#tbCounty').val().length === 0 || 
       $('#ddlLocationCode').val() === "default" || 
       $('#ddlSearchType').val() === "default") { 
        case $('#tbJDEName').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#tbJDEName').addClass("validatorBox"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#tbMailingAddress').val().length === 0: 
         $('#jdeABFieldSet legend').addClass("validatorText"); 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $("label[for='tbMailingAddress']").addClass("validatorText"); 
         //$('#tbMailingAddress').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#tbCity').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#tbCity').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#tbState').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#tbState').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#tbZip').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#tbZip').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#tbCounty').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#tbCounty').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#ddlLocationCode').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#ddlLocationCode').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
        case $('#ddlSearchType').val().length === 0: 
         $('#jdeABFieldSet').addClass("validatorBox"); 
         $('#ddlSearchType').addClass("validatorText"); 
         alert("JDE Address Book Request section must be filled out."); 
         break; 
       } 

//This function is the first thing called when the user clicks submit to clear the classes 
function clearValidationClass() { 
      $(".validatorBox").removeClass("validatorBox"); 
      $(".validatorText").removeClass("validatorText"); 
     } 
+2

В изоляции нет причин, чтобы эти строки кода не работали. Нам нужно увидеть больше вашего кода, чтобы понять, что происходит (или нет) –

+2

Каким образом эта функция не работает должным образом? Пожалуйста, предоставьте дополнительную информацию в своем вопросе. – Serlite

+0

@RoryMcCrossan см. Правки – user2756091

ответ

-2

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

$("#jdeABFieldSet").removeClass("validatorBox"); 

Надежда эта помощь.

+0

Это неверно. Вы должны проверить его в следующий раз. Возьмите [посмотреть] (https://jsfiddle.net/9g50n0ja/) – Loaf