@b1nary
php junior

Как сделать проверку в таблице?

Php отдаёт нам список сотрудников из базы, таблица "Сотрудники", попутно проверяя в таблице "Штат" - числятся ли они ещё в штате. На экран выводится табличка вида: 1 столбец - работник, 2 столбец кнопка проверки, 3 столбец - результат проверки.

5ef77854b2cc477dba35620203d84ddd.jpg

Столбец 1 это ячейки
<td>
    <input type="text" value="Имя"/>
</td>
с вписанными именами, т.е. имя вписано в инпут. Если Вася не числится в штате, мы его исправляем на Гену прямо в таблице. Далее по нажатию на кнопку напротив имени в столбце 2, аяксом отправляется запрос на сервер, который проверит в таблице "Штат", есть ли в штате Гена. Результат проверки должен положиться в столбец 3, в одной строке с именем. Как отправить аяксом, вернуть данные и вписать результат в таблицу я понимаю.

Я плохо представляю как мне джаваскриптом найти именно то поле, которое будет проверяться (разбирать DOM дерево в поисках нужного тега input и его содержимого к примеру) - в таблице выводится тысяча имён и как найти поле в третьем столбце, куда я буду вписывать результат. Jquery знаю на уровне теории. Благодарно выслушаю предложения о том, как решить задачу или сделать по-другому - лучше или проще.
  • Вопрос задан
  • 2595 просмотров
Решения вопроса 2
@ultrbi4
Может посмотреть в сторону this и относительно нажатой кнопки искать следующий столбец

$('button').click(function () {
       ...// делаем все дела с AJAX
       var status = "Есть" // засовываем результат работы AJAX в переменную
       $(this).parent().next('td').text(status); // относительно нажатой кнопки ищем следующий столбец и вносим туда переменную
});


Не претендую на идеал конечно ;)
Ответ написан
@IoannGrozny
Front-end разработчик
Какой-то странный интерфейс, если честно. Но если так надо, то я бы сделал так:
$('table').on('click', 'button',function() {  // делегирование, если поля будут меняться динамически
    var $par_tr = $(this).closest('tr'),      // находим родительскую строку таблицы, кешируем в переменной
        value = $par_tr.find('input').eq(0).val(),   // метод .find() возвращает массив!
        status;
        /*
          здесь работает ваш AJAX
        */
        if (ajaxResult) {    // булево значение, возращаемое AJAX`ом
            status = 'Есть!'
        } else {
            status = 'Нет!'   // Нету слова "Нету" xD
        }

        $par_tr.find('td').last().html(status);    //предпочитаю использовать метод .html(), в строку можно записывать теги, инлайновые стили и прочее.
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы