2017-02-01 9 views
0

У меня здесь немного сложная ситуация, которая, несмотря на мои серьезные усилия, не в состоянии найти разумное решение. Поэтому я размещаю его здесь. У меня есть JavaScript, к JQuery и HTML со следующими деталями:Как выбрать предыдущего родного брата родителя, чей ребенок является последним среди входных данных, которые не являются нулевыми, используя JQuery

var lastDateIndex =''; 
 
function datecheck(){ 
 
lastDateIndex = $('td, input[name=date]:not(:empty):last').prev('[name=index]'); 
 

 
alert(lastDateIndex.html()); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id='table1'> 
 
     <tr id='row1'> 
 
     <th>Index</th> 
 
     <th>Date</th> 
 
     <th>Description</th> 
 
     <th>Payment</th> 
 
     <th>Balance</th> 
 
     </tr> 
 
     <tr id='row2' name='row'> 
 
     <td name='index'>1</td> 
 
     <td name='rowdate'><input type="date" title="date1" name="date" onblur="datecheck();"></td> 
 
     <td name='description'><input title="description1" name="description"></td> 
 
     <td name='description'><input title="paymentpay1" name="paymentpay"></td> 
 
     <td name='description'><input title="balance1" name="balance"></td> 
 
     </tr> 
 
     <tr id='row3' name='row'> 
 
     <td name='index'>2</td> 
 
     <td name='rowdate'><input type="date" title="date2" name="date" onblur="datecheck();"></td> 
 
     <td name='description'><input title="description2" name="description"></td> 
 
     <td name='description'><input title="paymentpay2" name="paymentpay"></td> 
 
     <td name='description'><input title="balance2" name="balance"></td> 
 
     </tr> 
 
     <tr id='row4' name='row'> 
 
     <td name='index'>3</td> 
 
     <td name='rowdate'><input type="date" title="date3" name="date" onblur="datecheck();"></td> 
 
     <td name='description'><input title="description3" name="description"></td> 
 
     <td name='description'><input title="paymentpay3" name="paymentpay"></td> 
 
     <td name='description'><input title="balance3" name="balance"></td>  
 
     </tr> 
 
    </table>

Эта таблица имеет множество полей ввода, и все они должны быть заполнены пользователем в соответствии с его/ее потребности. Мне нужно выбрать td с name='index' внутри последних tr где td с input[name='date'] не имеет значения. Другими словами, если пользователь ввел детали дату в input[name='date'] и [title='date1'] внутри tr с id='row2' и оставил все остальные строки должен быть пустым, я хочу, чтобы выбрать HTML внутри name='index' внутри tr с id='row2'.

Функция, которую я написал выше, только оповещения , даже если все строки, кроме последнего, заполнены. Как я могу получить ответ от html от name='index' последних tr с пустым name='date'?

ответ

0

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

  1. В случае, если пользователь записывает значение в input[name='date'], обновить свой родительский TD и добавить атрибут class/data-* (например: addClass('date-isnt-null')).

  2. Используйте следующий селектор:

$('.tr:last-child td.date-isnt-null[name="index"]');

+0

Не могли бы вы показать, что вы имеете в виду ... –

0

Если всякий раз, когда вы называете функцию, которую вы хотите вывести все строки с введенной даты, вы можете использовать:

function datecheck() { 
    $('input[name=date]').each(function(i, el) { 
    if ($(el).val()) { 
     console.log($(el).parents('tr').find('[name=index]').html()); 
    } 
    }); 
} 

(не обязательно понять последний бит индекса).

Что касается Офира Баруха внушения, вот путь:

$(function() { 
    $('input[name=date]').bind('blur', function() { 
    if ($(this).val()){ 
     $(this).parent('td').addClass("dirty"); 
    } else { 
     // in case the user removes the date 
     $(this).parent('td').removeClass("dirty"); 
    } 
    }); 
}); 

function datecheck() { 
    var html = $('.tr:last-child td.dirty[name="index"]').html(); 
    console.log(html); 
} 

На входе дата размытости и, если пользователь введет дату, мы добавим класс dirty его родителю.

+0

Первый внутри каждого это имя = «индекс», чей HTML я хочу вывести, если его с именем = «дата» пусто. –

+0

В этом случае оба моих предложения должны работать. – Derlin