Javascript.RU

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

Как изменить value в input
Здравствуйте.
Пытаюсь подкорректировать рабочий скрипт, который отправляет данные контроллеру (исходный текст)
$('button.submitProductChange').unbind('click').click(function(e) {
		e.preventDefault();

		if ($(this).closest('tr.product-line-row').find('td .edit_product_quantity').val() <= 0)
		{
			jAlert(txt_add_product_no_product_quantity);
			return false;
		}
		if (confirm(txt_confirm))
		{
			var element = $(this);
			var element_list = $('.customized-' + $(this).parent().parent().find('.edit_product_id_order_detail').val());
			query = 'ajax=1&token='+token+'&action=editProductOnOrder&id_order='+id_order+'&';
			if (element_list.length)
				query += element_list.parent().parent().find('input:visible, select:visible, .edit_product_id_order_detail').serialize();
			else
				query += element.parent().parent().find('input:visible, select:visible, .edit_product_id_order_detail').serialize();

			$.ajax({
				type: 'POST',
				url: admin_order_tab_link,
				cache: false,
				dataType: 'json',
				data : query,
				success : function(data)
				{
					if (data.result)
					{
						if (data.refresh)
						{
							location.reload();
							return;
						}
						refreshProductLineView(element, data.view);
						updateAmounts(data.order);
						updateInvoice(data.invoices);
						updateDocuments(data.documents_html);
						updateDiscountForm(data.discount_form_html);

						// Initialize all events
						init();

						$('.standard_refund_fields').hide();
						$('.partial_refund_fields').hide();
						$('.add_product_fields').hide();
						$('.row-editing-warning').hide();
						$('td.product_action').attr('colspan', 3);
					}
					else
					{	
						jAlert(data.error);
					}
				}
			});
		}

Моя задача - чтобы в случае неудачного выполнения запроса кроме Алерта в поле input занести определенное значение.
Для этих целей после jAlert(data.error); я вставил строку с обновлением input, value которого проверяется в строке 04 :
$(this).closest('tr.product-line-row').find('td .edit_product_quantity').val('800');

Результат нулевой, т.е. значение не меняется.
Что я не так сделал?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2017, 16:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$(this).closest ..... после после jAlert(data.error).

А здесь уже this не является кнопкой button.submitProductChange, это уже контекст $.ajax. Сохраните this, а затем используйте.
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2017, 16:55
Аспирант
Отправить личное сообщение для Огонек Посмотреть профиль Найти все сообщения от Огонек
 
Регистрация: 11.06.2017
Сообщений: 45

Не сочтите за лентяя
Сообщение от laimas
Сохраните this, а затем используйте.
Просто, когда пытаешься погуглить то чего еще толком не понимаешь, то и не знаешь что писать в поиске
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2017, 17:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$('button.submitProductChange').unbind('click').cl ick(function(e) {
e.preventDefault();
if ($(this).closest.... - здесь this, это button.submitProductChange.
Сохраните ее, например var btn = $(this), и используйте далее. То есть после jAlert(data.error) не $(this).closest..., а btn.closest...
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2017, 17:31
Аспирант
Отправить личное сообщение для Огонек Посмотреть профиль Найти все сообщения от Огонек
 
Регистрация: 11.06.2017
Сообщений: 45

Так такая переменная уже в коде есть
var element = $(this);

и element.closest... я уже пробовал. Результат - этот button.submitProductChange "залипает" в нажатом состоянии и ничего не происходит, пока не нажмешь другую кнопку "Отменить"
Ответить с цитированием
  #6 (permalink)  
Старый 11.06.2017, 17:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А причем тут залипание кнопки?

Еще раз, если вы пытаетесь здесь

else {
jAlert(data.error);
$(this).closest..... достучаться до какого-то поля формы, то вы его не получите, почему, повторять не буду.
}

Вопрос в этом заключался же? Как правильно обратиться уже сказано, сохранено уже, ну так используйте. А "залипшая" кнопка при этом или нет, это не важно. Если "залипло и ничего не происходит", значит сам процесс не работает.
Ответить с цитированием
  #7 (permalink)  
Старый 11.06.2017, 17:58
Аспирант
Отправить личное сообщение для Огонек Посмотреть профиль Найти все сообщения от Огонек
 
Регистрация: 11.06.2017
Сообщений: 45

Спасибо, все заработало.
Проблема была в неправильно выбранном имени переменной.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
как прописать условия для полей input и textarea Nailya Общие вопросы Javascript 12 06.06.2013 16:48
Как сверстать input без картинок greatilya (X)HTML/CSS 26 26.01.2012 16:10
ActionScript - как изменить значение soundbuftime? Маэстро Flash 6 14.01.2012 15:08
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55