Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2015, 11:24
Аспирант
Отправить личное сообщение для Nifler Посмотреть профиль Найти все сообщения от Nifler
 
Регистрация: 29.09.2013
Сообщений: 37

Как выбрать элемент, который отправлялся ajax
задание следующее: есть таблица с инпутами. Возле каждого поля для записи есть кнопка для отправки. Когда менять текст в инпуте - он становится синим. При нажатии кнопки текст летит при помощи метода .get на сервер, там записывается в базу и если все сработало хорошо то эту строку нужно сделать черного цвета. Как определить какой именно инпут был отправлен?
Вот как выглядит табличка.
<table>         <tr>
                                <th>ID</th>
                                <th>Действие</th>
                                <th>Текст</th>
                                <th>Отправить</th>
                            </tr>
                            <tr>
                                <td>1</td>
                                <td>Успішна авторизація</td>
                                <td> <input type='text' name=1 value='Ви успішно авторизувалися!'></td>
                                <td><input type='submit' class='sub' value='Изменить'></td>
                            </tr>
            
                            <tr>
                                <td>2</td>
                                <td>Невірний пароль або мейл</td>
                                <td> <input type='text' name=2 value='Ви ввели невірний e-mail та/або пароль!'></td>
                                <td><input type='submit' class='sub' value='Изменить'></td>
                            </tr>
</table>

Вот как изменяю цвет на синий
$('input').keyup(function(){
            $(this).css("color","blue");
        })

а вот мой гет полетел
$(".alert-list input.sub").click(
            function(){
                var textInput = $(this).parent().prev().find('input').val();
                var id = $(this).parent().prev().prev().prev().text();
                var data = "id="+id+"&text="+textInput;
                $.get("modules/misc/alert_list.php", data, sendCallback,"json");
            }
        )

после этого в sendCallback возвращается true если все хорошо и false если не получилось записать.
Вот функция sendCallback
function sendCallback(data){
            if(data.res){
                alert('Тут нужно изменить цвет на черный.');
            }else{
                alert('Не получилось изменить это сообщение!');
            }
        }


Как достучаться к тому элементу с которого летел гет запрос? то есть вот к этому который был в гет запросе
var textInput = $(this).parent().prev().find('input').val();
Пытался сделать вот так:
var input = $(this).parent().prev().find('input');
а потом в sendCallback написать
input.css('color','black')
но не получилось, вероятно там что-то с зоной видимости.
Как можно это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2015, 12:16
Интересующийся
Отправить личное сообщение для oxxy Посмотреть профиль Найти все сообщения от oxxy
 
Регистрация: 05.12.2013
Сообщений: 20

Если это форма авторизации, то я б наверное создал обьект,наподобие

var obj ={}; 
obj['passw']=vaue; 
obj[login']=vaue;


и его отправить на сервер методом post,а там каждый запрос по имени проверил,а потом сформировал json с данными и в ответ кинул
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2015, 12:20
Аспирант
Отправить личное сообщение для Nifler Посмотреть профиль Найти все сообщения от Nifler
 
Регистрация: 29.09.2013
Сообщений: 37

нет не форма авторизации. это много таблиц с данными которые можно редактировать. по сути это просто возможность через админку редактировать некоторые поля на сайте. полей слишком много и они в разных таблицах. думал уже о том чтобы id-шник както передавать в php а потом получать обратно но это слишком тупо. придется делать бесконечное количество класов или еще как-то так мутить. у меня некоторая чуйка на быдлокодинг и это кажется именно он и получится)
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2015, 12:52
Интересующийся
Отправить личное сообщение для oxxy Посмотреть профиль Найти все сообщения от oxxy
 
Регистрация: 05.12.2013
Сообщений: 20

Если много элементов то можно перед отправкой также создать массив(обьект) только создавать его динамически,путем перебора всех инпутов, а ключом для массива можно взять уникальный атрибут например атрибут инпута name ,ну а на серве аналогично его разбирать foreach т.д =)
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2015, 13:06
Аспирант
Отправить личное сообщение для Nifler Посмотреть профиль Найти все сообщения от Nifler
 
Регистрация: 29.09.2013
Сообщений: 37

да, я понял эту логику. но охота сделать по другому, почему-то кажется что такие сложности это хреновый вариант. уже увидел интересное слово замыкание и области видимости. изучаю эту область
Ответить с цитированием
  #6 (permalink)  
Старый 20.08.2015, 08:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Nifler
уже увидел интересное слово замыкание и области видимости. изучаю эту область
Дал тебе пример в другой твоей теме...
Как выбрать элемент, который отправлялся ajax
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
как найти в jquery элемент, который создан в цикле php Vagif jQuery 4 08.08.2013 18:17
Flow moving как в seadragon Ajax den_zm Dojo toolkit 0 19.04.2013 14:34
Как выбрать следующий элемент с классом zsaz jQuery 1 02.03.2011 11:59