Javascript.RU

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

Получение значения соседнего элемента
Доброго времени суток. Только начинаю познавать JavaScript, DOM, Ajax
Вопрос такого характера как отправить значение элемента и еще одного соседнего. Есть HTML
<html>
<head>
<title>Пробная версия</title>

<script src="http://www.mysite.com/JS/mylib.js" type="text/javascript"></script>
<script type="text/javascript">
function sendRequest(url, payload)
{
  var options = {method:"POST",
			payload : payload,
			outputTarget: "responseOutput"
		     };
				  
	MyLib.comm.sendRequest(url, options);
}


function save(elm, input)
 {
  /* escape the content to avoid XSS problems */
  var valelm = input.value.replace(/<([^>]*)>/g, "&lt;$1&gt;");

  /* set content to edited value */
  elm.innerHTML = valelm;

  /* save content via Ajax call */
  var url = "http://www.mysite.com/myscript.php";
  var payload = "valelm=" +valelm;
  sendRequest(url, payload);
 }

function edit(elm)
 {
  /* check to see if we are already editing */
  if (elm.firstChild.tagName && elm.firstChild.tagName.toUpperCase() == "INPUT")
    return;

  /* create edit field */
  var input = document.createElement("input");
  input.type = "text";
  input.value = elm.innerHTML;
  input.size = elm.innerHTML.length;

  /* apply special editing style */
  var editstyles = elm.className.match(/inedit-(\w+)/);
  if (editstyles)
   input.className = RegExp.$1;
   
   
  /* convert content to editable */
  elm.innerHTML = '';
  elm.appendChild(input);

  /* position cursor and focus */
  if (input.selectionStart)
	input.selectionStart = input.selectionEnd = 0;
  else
	{
	 var range = input.createTextRange();
     range.move("character", 0);
     range.select();
	}
  input.focus();

  /* set save trigger callback */
  input.onblur = function(){save(elm, input);};
}

window.onload = function ()
{
  var toEdit = document.getElementsByClassName("editable");   
  for (var i = 0 ; i< toEdit.length; i++)
      toEdit[i].ondblclick = function(){edit(this);};
};
</script>
</head>
<body>
<div id="row1"><input type="hidden" name="idRow1" value="%ID%"><div class="editable doubleclick">Текст первой строки</div></div>
<div id="row2"><input type="hidden" name="idRow2" value="%ID%"><div class="editable doubleclick">Текст второй строки</div></div>
<div id="row3"><input type="hidden" name="idRow3" value="%ID%"><div class="editable doubleclick">Текст третей строки</div></div>

<!-- Здесь Ajax покажет результат своей работы. Кроется это за MyLib.comm.sendRequest(url, options); выкладывать все нет смысла, так как это проверено, работает, вопрос в другом сейчас будет -->
<div id="response" class="results">
  <div id="responseOutput">&nbsp;</div>
</div>
</body>
</html>



Скрипту http://www.mysite.com/myscript.php посылаются данные на что он отвечает
<?php
  if ($_POST)
  {
     echo $_POST['valelm'];
  }
?>


И в <div id="responseOutput">&nbsp;</div> появляется соответствующая надпись которую возвращает PHP скрипт.

А теперь подскажите мне банальную вещь (или я уже устал, перепрограммировал, переобучился), но я не могу сообразить, как мне передать значение двух элементов после события OnBlur.

Как вы поняли это скрипт Click to edit. Щелкнул по диву два раза появляется INPUT при событии onblur значение INPUT передается скрипту. А как мне сделать чтобы еще соседнее значение передавалось вместе с ним? Чтобы с $_POST['valelm'] еще передался ID в скрытом поле на этой строке

Как видно есть строка
<div id="row1"><input type="hidden" name="idRow1" value="%ID%"><div class="editable doubleclick">Текст первой строки</div></div>


Каждая строка имеет уникальный ID и две информационные ячейки первая это скрытое поле ID значению VALUE будет присвоено ID из базы данных и вторая это отредактированное значение <div class="editable doubleclick"></div>, которое будет передано скрипту.

Мне нужно чтобы PHP получил и обработал и вернул 2 значения

<?php
  if ($_POST)
  {
     echo 'Элемент под номером <tt>'.$_POST['idRow%NUMBER%'].'</tt> подписан, как <tt>'.$_POST['valelm'].'</tt>';
  }
?>


P.S. в sendRequest второе значение передается легко через options, payload.
В функции save()
var payload = "valelm=" +valelm+ "&id=" +id+ "&other=" +other+ "&etc=" +etc;


Но как мне ID в эту строку воткнуть?
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2011, 14:42
Аватар для Max Tretyakov
Новичок на форуме
Отправить личное сообщение для Max Tretyakov Посмотреть профиль Найти все сообщения от Max Tretyakov
 
Регистрация: 27.06.2011
Сообщений: 4

Хочу, чтобы то, что я написал было понято, запутал все, а задача простая.

function save(elm, input)

 {
  /* escape the content to avoid XSS problems */
  var valelm = input.value.replace(/<([^>]*)>/g, "&lt;$1&gt;");
 
  /* set content to edited value */
  elm.innerHTML = valelm;
  var idelm = document.СТРОКА ГДЕ НАХОДИТСЯ ELM.СКРЫТОЕ ПОЛЕ ID НА ЭТОЙ ЖЕ СТРОКЕ.ЗНАЧЕНИЕ; /* вот здесь как мне указать это скрытое поле???*/

  /* save content via Ajax call */
  var url = "http://www.mysite.com/myscript.php";
/*если value этого поля будет присвоено переменной idelm - задача будет выполена*/
  var payload = "valelm=" +valelm+ "&id" +idelm;
  sendRequest(url, payload);
 }


Заранее спасибо.
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2011, 22:01
Аватар для Max Tretyakov
Новичок на форуме
Отправить личное сообщение для Max Tretyakov Посмотреть профиль Найти все сообщения от Max Tretyakov
 
Регистрация: 27.06.2011
Сообщений: 4

Отдохнул пару часиков, решил продолжить, нашел сразу решение вопроса. Смешно и стыдно, что тему создал, можно закрыть
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение значения элемента display (Sandr) Общие вопросы Javascript 15 08.02.2017 10:28
AJAX обращение к файлу php и получение значения zeraid jQuery 8 28.03.2011 14:46
Задание значения элемента формы и submit Enklgd01 Общие вопросы Javascript 4 28.09.2010 11:24
Получение стиля элемента. BreatheInTheVoid Элементы интерфейса 4 01.05.2010 17:25
передача значения предыдущего элемента ani_jery jQuery 1 16.10.2009 17:24