Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 11.07.2013, 22:06
Интересующийся
Отправить личное сообщение для Hisot Посмотреть профиль Найти все сообщения от Hisot
 
Регистрация: 10.07.2013
Сообщений: 16

Сообщение от bes Посмотреть сообщение
выделение наверное будешь оформлять каким-либо классом, тогда при отправке данных лучше просто взять данные из ячеек с этим классом
Сделал выбор картинки и вывод сообщения в одном скрипте:
<script>
	var x=false;
  	function imgchange(obj) {
   		if  (x){
  			obj.src="free.png";
   		} else {
   			obj.src="ok.png";
   			alert("Row is: "+ obj.parentNode.parentNode.rowIndex + "\nCell is: " + obj.parentNode.cellIndex);
   		}
   		x=!x;
 	}
</script>

Но вот почему-то баг с не однократным нажатием остался=(
Из-за чего он может возникать?

Для примера: [3,6] я выделяю 1 кликом, после чтоб выделить [3,7] мне надо будет нажать туда раза 2-3 и только после этого сработает смена картинки. Так же будет и с [4,6] и тд. Если я захочу снять выделение, то опять же надо будет нажать 2 раза на него. Однако стоит мне сначала выбрать [3,6] и потом снять с него выделение, то это всё происходит в 1 клик.

А можно чуть подробнее про класс? Его в jsp оформлять?
Я думал может быть можно как-либо в скрипт дописать ещё создание к примеру вот такой строки:
<input type="hidden"  value="Сюда вставлять данные о ряде и месте">

Последний раз редактировалось Hisot, 11.07.2013 в 22:17.
Ответить с цитированием
  #22 (permalink)  
Старый 11.07.2013, 22:48
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

толком не знаешь нативный js, юзай jquery
покликай на ячейках, потом возьмёшь данные из нужных ячеек и отошлёшь ajax-м
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<style>
.green {
	background-color: green;
}
td {
	border: solid 1px;
}
</style>
<table class="table">
	<tr>
		<td>11</td>
		<td>12</td>
	</tr>
	<tr>
		<td>21</td>
		<td>22</td>
	</tr>
</table>
<script>
jQuery(function ($) {
	$(".table").on("click", "td", function (e) {
		$(e.target).toggleClass("green");
		alert($(".green").size());
	});
})
</script>
Ответить с цитированием
  #23 (permalink)  
Старый 11.07.2013, 23:44
Интересующийся
Отправить личное сообщение для Hisot Посмотреть профиль Найти все сообщения от Hisot
 
Регистрация: 10.07.2013
Сообщений: 16

Сообщение от bes
толком не знаешь нативный js, юзай jquery
покликай на ячейках, потом возьмёшь данные из нужных ячеек и отошлёшь ajax-м
Я же писал, что с js не дружу=( Да jquery тоже не лучший друг
Код, который написали вы работает, но он отмечает всё подряд, а не только те места, которые свободны. И там меняется цвет, а мне бы хотелось чтоб менялось на картинку.
Сейчас почитаю про Ajax
Ответить с цитированием
  #24 (permalink)  
Старый 12.07.2013, 18:05
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Hisot
Код, который написали вы работает, но он отмечает всё подряд, а не только те места, которые свободны
не ты ли хотел по клику выбирать место, один клик - выбрал, второй - снял выбор
поставь условие, чтобы занятые места не выбирались

Сообщение от Hisot
И там меняется цвет, а мне бы хотелось чтоб менялось на картинку.
проблемы в этом нет, я дал тебе пример-каркас, где есть и event.target и использование класса (сам спрашивал с чем это едят)

Сообщение от Hisot
Я же писал, что с js не дружу=( Да jquery тоже не лучший друг
без этих знаний тебе задачу самому всё равно не решить, поэтому придётся подружиться, либо не решать задачу на клиенте (использовать что-нибудь типа jsf)
Ответить с цитированием
  #25 (permalink)  
Старый 13.07.2013, 20:45
Интересующийся
Отправить личное сообщение для Hisot Посмотреть профиль Найти все сообщения от Hisot
 
Регистрация: 10.07.2013
Сообщений: 16

bes,
Я всё никак не могу понять как менять картинку при клике=( Я не могу понять как добраться до src у img.
В данный момент я только дошёл до момента, когда получаю значения ряда и места, но мне кажется, что код не правильный=(
Код:
jQuery(function ($) {
	$(".table").on("click", "td", function (e) {
		var $tar = $(e.target);
		var $td = $tar.parents('td:first');
		var $tr = $td.parents('tr:first');
		var place = $tr.children().index($td);
		var row = $tr.index();
		var data = $td.html();
		//if (???) { //тут в будущем будет условие при котором следует менять картинку
			$tar.toggleClass("green");
			alert($(".green").size() + "; Place = " + place + "; Row = " + row + "; Data = " + data);
		//}
	});
});
Ответить с цитированием
  #26 (permalink)  
Старый 13.07.2013, 21:19
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

хотя бы так, если картинка фоном, если нет, получить ссылку на картинку -> изменить src
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<style>
.green {
	background: url("http://javascript.ru/forum/image.php?u=19820&dateline=1334914235");
}
td {
	border: solid 1px;
	width: 50;
	height: 50;
	background: url("http://javascript.ru/forum/images/ca_serenity/misc/logo.gif");
}
</style>
<table class="table">
	<tr>
		<td>11</td>
		<td>12</td>
	</tr>
	<tr>
		<td>21</td>
		<td>22</td>
	</tr>
</table>
<script>
jQuery(function ($) {
	$(".table").on("click", "td", function (e) {
		$(e.target).toggleClass("green");
		alert($(this).text());
	});
})
</script>

сделай тестовый пример, возможность запуска [html run]
Ответить с цитированием
  #27 (permalink)  
Старый 13.07.2013, 23:28
Интересующийся
Отправить личное сообщение для Hisot Посмотреть профиль Найти все сообщения от Hisot
 
Регистрация: 10.07.2013
Сообщений: 16

Вот сделал наконец. Теперь осталось взять данные Row и Place и загонять их в массив, когда отмечается место и убирать данные из массива когда отметка снимается.
В данный момент я знаю, что данные добавляются в массивы, но почему-то не хотят оттуда удаляться=(
Вот такой вид имеет сейчас код:
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
		<title>Tickets ordered</title>
		<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
  		<script>
		var rows = [];
		var places = [];
		var count = 0;
		jQuery(function ($) {
			$(".table").on("click", "td", function (e) {
				var $tar = $(e.target);
				var $td = $tar.parents('td:first');
				var $tr = $td.parents('tr:first');
				var place = $tr.children().index($td);
				var row = $tr.index();
				var data = $td.children();
				var srcImg = $tar.attr('src');
				if (srcImg == "http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035"){
					$tar.attr('src', 'http://javascript.ru/forum/attachment.php?attachmentid=1856&stc=1&d=1373743035');
					rows[count] = row;
					places[count]= place;
					alert("Place = " + place + "; Row = " + row + "; Data = " + srcImg);
					alert(rows[count] + "|" + places[count] + "|" + count);
					count++;
				}
				if (srcImg == "http://javascript.ru/forum/attachment.php?attachmentid=1856&stc=1&d=1373743035"){
					$tar.attr('src', 'http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035');
					for (var i=0;i<rows.lenght;i++){
						if (rows[i]==row && places[i]==place){
							alert(rows[i] + "|" + places[i]);
							rows[i]=null;
							places[i]=null;
						}
					}
					count--;
				}
			});
		});
	</script>
  	</head>
</html>
	<body>
		<form method="post" action="<c:url value='/order?idPlay=${idPlay}&idDate=${idDate}'/>">
			<div style="background: url(http://javascript.ru/forum/attachment.php?attachmentid=1857&stc=1&d=1373742596) no-repeat top left;">
			<br><br><br>
				<div style="margin-left: 55px">
					<TABLE class="table">
						<TR>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1854&stc=1&d=1373743035'></TD>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035'></TD>
						</TR>
						<TR>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1854&stc=1&d=1373743035'></TD>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035'></TD>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035'></TD>
						</TR>
						<TR>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035'></TD>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1854&stc=1&d=1373743035'></TD>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035'></TD>
							<TD><img src='http://javascript.ru/forum/attachment.php?attachmentid=1855&stc=1&d=1373743035'></TD>
						</TR>
					</TABLE>
				</div>
			</div>
			<input type="submit" value="Ordered">
		</form>
	</body>
</html>
Изображения:
Тип файла: png cancel.png (1.1 Кб, 16 просмотров)
Тип файла: png free.png (153 байт, 15 просмотров)
Тип файла: png ok.png (735 байт, 16 просмотров)
Тип файла: jpg hallplan.jpg (78.5 Кб, 3 просмотров)

Последний раз редактировалось Hisot, 14.07.2013 в 04:50.
Ответить с цитированием
  #28 (permalink)  
Старый 14.07.2013, 12:52
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<style>
.table {
	background-color: rgb(250, 250, 250);
}
.table td {
	border: outset 2px ;
	min-width: 40px;
	min-height: 40px;
}
.table td div {
	text-align: right;
}
.table td div:first-child {
	text-align: left;
}
.not-selectable {
	background: url("http://javascript.ru/forum/attachment.php?attachmentid=1854&stc=1&d=1373743035") no-repeat center center;
}
.selected {
	background: url("http://javascript.ru/forum/attachment.php?attachmentid=1856&stc=1&d=1373743035") no-repeat center center;
}
</style>
<button class="send">send</button>

<script>
jQuery(function ($) {
	var str = "<table class=\"table\">";
	for (var i = 1; i <= 7; i++) {
		str += "<tr>";
		for (var j = 1; j <= 10; j++) {
			str += "<td><div>" + i + "</div><div>" + j + "</div></td>";
		}
		str += "</tr>";
	}
	str += "</table>";
	$("body").prepend(str);
	var table = $(".table").get(0);
	table.rows[0].cells[0].className = "not-selectable";
	table.rows[2].cells[3].className = "not-selectable";
	table.rows[3].cells[5].className = "not-selectable";
	
	$(".table").on("click", "td", function () {
		if (this.className != "not-selectable") {
			$(this).toggleClass("selected");
		}
	});
	$(".send").on("click", function () {
		var str="data=";
		$.each($("td.selected"), function() {
			str += this.parentNode.rowIndex + "," + this.cellIndex + ";";
		});
		alert(str);
		$.ajax({
			type: "POST",
			url: "your.php",
			data: str
		});
	});
});
</script>
Ответить с цитированием
  #29 (permalink)  
Старый 14.07.2013, 18:57
Интересующийся
Отправить личное сообщение для Hisot Посмотреть профиль Найти все сообщения от Hisot
 
Регистрация: 10.07.2013
Сообщений: 16

bes,
Спасибо огромное, взял часть кода=)
Но теперь не могу выловить в контроллере то, что отправил ajax
В контроллере пишу пытаюсь принять данные так:
String str = request.getParameter("str");

и потом пытаюсь отправить эту строку на страницу так:
request.setAttribute("str", str);

и ничего не выводит=(
Ответить с цитированием
  #30 (permalink)  
Старый 14.07.2013, 19:23
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

параметр у меня назывался data
вывод в jsp: out.print(request.getParameter("data"));
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение таблицы на JavaScript freeze123 Opera, Safari и др. 4 08.04.2013 09:42
заполнение comboBox из sql таблицы ynijar ExtJS 2 18.02.2013 22:47
Через ajax отправить много данных из таблицы на сервер Heger jQuery 3 29.08.2012 18:51
Заполнение таблицы с помощью AJAX x][x AJAX и COMET 11 08.05.2009 19:58
Фиксированный заголовок таблицы ilshat Элементы интерфейса 6 20.12.2008 00:35