Показать сообщение отдельно
  #1 (permalink)  
Старый 27.07.2014, 17:52
Новичок на форуме
Отправить личное сообщение для mastanggt Посмотреть профиль Найти все сообщения от mastanggt
 
Регистрация: 24.07.2014
Сообщений: 8

Неправильно работает атрибут data-*
Добрый день.
Не знаю как именно назвать тему, поэтому назвал вот так
Есть такая таблица, и окно редактирования правила - Ссылка.
В кнопку "Сохранить" атрибутом data-id передается Id редактируемого правила.
Собственно в чем проблема, при отправке запроса, сервер проверяет поля, и если что-то не так, возвращает ошибки, которые выводятся под инпутом.
Если я оставлю пустым поле "Имя", или "Условие", вернутся ошибки и отобразятся под инпутами. Дальше если не обновлять страницу, а нажать на кнопку отменить и перейти к изменению другого правила, то почему-то при запросе на сервер передается data-id первого правила который мы пытались изменить.
Вот js код:
button.tableEdit - кнопка "Изменить"
button#saveChangeRule - кнопка "Сохранить"


$(document).ready(function () {


	$("input[type=checkbox]").click(function () {
		var id = this.id;
		var val = this.checked;
		$.post('tableRule/changeFlagRule/', {"id": id, "val": val},
			function (res) {
				$("#message").dialog({ title: 'Сообщение', show: 'drop', hide: 'explode' }).html(res);
			});
	});

	$('button.tableEdit').click(function () {
		var $btn = $(this);
		var rule = $btn.data('rule');

		$('button#saveChangeRule').attr({
			'data-id': rule.id
		});

		$('#myModalLabel').html('Введите новые данные для правила #' + rule.id);

		$('#errorName').empty();
		$('#errorRule').empty();
		$('#errorEventSid').empty();
		$('#errorSignalSid').empty();

		$('#inputEventSid ').val(rule.event_id);
		$('#inputSignalSid').val(rule.signal_id);
		$("#EventSid").find('input').val(rule.event.event_sid);
		$('#SignalSid').find('input').val(rule.signal.signal_sid);


		$('#inputName').val(rule.name);
		$('#inputRule').val(rule.rule);
	});


	$('button#saveChangeRule').click(function () {
		var $btn = $(this);
		var id = $btn.data('id');

		var eventSid = $('#inputEventSid').val();
		var signalSid = $('#inputSignalSid').val();
		var name = $('#inputName').val();
		var rule = $('#inputRule').val();
		alert($('#saveChangeRule').data('id'));
		$('button').attr('disabled', true);
		$.post('tableRules/changeData/', {
				event_id: eventSid,
				signal_id: signalSid,
				rule: rule,
				name: name,
				id: id
			},
			function (data) {
				if (data['errors']) {
					$('button').attr('disabled', false);
					$('#errorName').html(data['errors']['name']);
					$('#errorEventSid').html(data['errors']['event_id']);
					$('#errorRule').html(data['errors']['rule']);
					$('#errorSignalSid').html(data['errors']['signal_id']);
					return;
				}
				location.reload();
			}
		);
	});

	$('button.addDataRuleTable').click(function () {
		var eventSid = $('#inputEventSidAdd').val();
		var signalSid = $('#inputSignalSidAdd').val();
		var name = $('#inputNameAdd').val();
		var rule = $('#inputRuleAdd').val();

		$.post('tableRules/addData/', {
				event_id: eventSid,
				signal_id: signalSid,
				rule: rule,
				name: name
			},
			function (data) {
				if (data['errors']) {
					$('#errorNameAdd').html(data['errors']['name']);
					$('#errorEventSidAdd').html(data['errors']['event_id']);
					$('#errorRuleAdd').html(data['errors']['rule']);
					$('#errorSignalSidAdd').html(data['errors']['signal_id']);
					return;
				}
				location.reload();
			}
		);
	});
});
Ответить с цитированием