2015-12-24 3 views
10

Я искал в SO. Я нашел так много примеров, но мой был немного отличным от всех.Как найти ближайший элемент с помощью jquery

1) первоначально у меня есть строка, если пользователь нажмет сохранить & следующей кнопку будет у вас есть 3 поля отсутствует

2), если пользователь нажимает кнопку addmore и он не набирал никакого значения в тексте поле, то он нажимает кнопку сохранения и следующий, он должен все же сказать, что 3 поля отсутствуют

3) если пользователь набирает какое-либо одно из полей в клонированной строке, то он нажимает кнопку «Сохранить», а следующая кнопка должна быть проверена с первым кодом две точки работают

, но проблема в том, что пользователь нажимает несколько строк и он вводит в любое из клонированного поля, а затем, если он нажимает безопасную и следующую кнопку, класс required_Field применяется во всех других областях, но он должен применяться только к этой строке :(

Если мы сможем найти ближайший элемент поля, где тип пользователя, то я могу в состоянии добавить required_Field класс этих элементов только

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

 function additionalvalidation() { 
      var myRow = $(".check").length; 

      //$(".cloned_field").css("border","1px solid green"); 
      $(".cloned_field").change(function() { 
       var myField = $(".cloned_field").val().length; 
      if (myField >= 0) { 
       $(".cloned_field").addClass("required_Field"); 
       debugger; 
       $(".cloned_field").prevAll('label').find('span.required-star').removeClass('text-error-red'); 
       //bind_validation(); 
      } else { 
       $(this).closest(".cloned_field").removeClass("errRed"); 
       $(".cloned_field").removeClass("text-error-red"); 
      } 
      bind_validation(); 
      return false; 
      }); 
     } 

с моим текущим кодом я получаю сообщение об ошибке.

Uncaught TypeError: Не удается прочитать свойство 'длина' неопределенной

$(this).closest(".cloned_field").addClass("required_Field"); 

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

$(this).closest(".cloned-row1").addClass("required_Field"); 

Любое предложение по этому вопросу

я попробовал этот новый ->

$(this).closest(".cloned_field").css({"color": "red", "border": "2px solid red"}); 

красного цвета и красная граница применения только для этого поля не для строки :(

Fiddle link для справки

+0

Пожалуйста, добавьте свой HTML – Mohan

+0

'this' относится к' window' в приведенном примере .. – Rayon

+0

'$ (this) .parents ('. Educat_info'). After ($ clone);' не работает, потому что ' educat_info' DIV не является родителем кнопки «Добавить больше». Таким образом, клон никогда не добавляется в DOM, а затем '$ (". Cloned_field "). Val(). Length' не работает, потому что нет' cloned_field' и 'val()' возвращает 'undefined'. – Barmar

ответ

3

@mahadevan попробуйте этот код. I working

 function additionalvalidation() { 
      var myRow = $(".check").length; 

      //$(".cloned_field").css("border","1px solid green"); 
      $(document).on("change",".cloned_field",function() { 
      var myField = $(this).val(); 
      var $clonedDiv = $(this).closest('.cloned_div'); 

      if (myField!='') {  
       $clonedDiv.find(".cloned_field").addClass("required_Field"); 
       $clonedDiv.find(".deg_date").addClass("required_Field"); 
       $clonedDiv.find(".trans_date").addClass("required_Field"); 
       $clonedDiv.find(".txt_degreName").addClass("required_Field"); 


       debugger; 
       $(".cloned_field").prevAll('label').find('span.required-star').removeClass('text-error-red'); 
       //bind_validation(); 
      } else { 
       $clonedDiv.find(".cloned_field").removeClass("errRed"); 
       $clonedDiv.find(".deg_date").removeClass("errRed"); 
       $clonedDiv.find(".trans_date").removeClass("errRed"); 
       $clonedDiv.find(".txt_degreName").removeClass("errRed"); 

       //$(".cloned_field").removeClass("text-error-red"); 
      } 
      bind_validation(); 
      return false; 
      }); 
     } 
0

Jquery рядом, может быть, ответа для вас

Description: Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.

https://api.jquery.com/next/

+0

Arda Я пробовал это, но он не работал – Mahadevan

+0

с этим ниже кодом, это работало только для текущего поля не для этой строки $ (this) .closest (". Cloned_field"). Css ({"color": " красный "," border ":" 2px solid red "}); – Mahadevan

+0

Я по дороге домой. когда я вернусь домой, я буду проверять вашу проблему глубже. повесить там :) –

-1

Вы обнаружили, что наиболее близкий поиск в дереве родителей и найти ближайший. Если вы хотите выполнить поиск в брате и сестрах, вы должны выполнить поиск на родных и близких.

Смежные вопросы