Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   "Динамическое" получение значений input (https://javascript.ru/forum/events/57505-dinamicheskoe-poluchenie-znachenijj-input.html)

kazakn 06.08.2015 15:23

"Динамическое" получение значений input
 
Доброго дня форумчане!
Бьюсь головой :blink: второй день из-за того что не могу получить значение из input'a формы, которая создается по событию клика. Т.е. имеется таблица со значениями, по клику на строке создается div с input, в который вводится значение и далее оно попадает в бд... Так вот не получается у меня его вытащить... Пример кода (извиняюсь за смешивание js/jquery и всевозможные костыли/велосипеды:) -
function newDialog(dtitle, ddata)
  {
	var body = document.getElementsByTagName("body")[0];
	var id = "dlgTest_"+Math.floor(Math.random(1,53)*1000);
	$("[id ^= dlg]").remove();
	
	var dclose = document.createElement("div");
	dclose.setAttribute("class", "dialogClose");
	dclose.setAttribute("onclick", "delDiv('"+id+"');");
	dclose.innerHTML = "X";
	
	var dialog = document.createElement("div");
	dialog.setAttribute("class", "dialogScript");
	dialog.setAttribute("id", id);
	dialog.setAttribute("style", "display:none");
	
	dialog.innerHTML = dtitle+"<br>"+ddata;
	dialog.appendChild(dclose);
	body.appendChild(dialog);
	
	return id;
  }

var data = "<div align='center'><b>Запись №"+id+"</b><br><br><br><form id='updRec'>Введите значение:<br><br><input class='dbut' size='35' type='text' id='updText'></input><br><br><br><br><input class='dbut' type='button' value='ОБНОВИТЬ' onclick='alert("+$("#updText").val()+")'></input></form></div>";
var idDialog = newDialog("<hr size='8' color='#46c765'>", data);


Вот этих два момента
1. <input class='dbut' size='35' type='text' id='updText'></input>
2. onclick='alert("+$("#updText").val()+")'

Пробовал serialize формы, вложенные функции, просто добраться до элемента формы на js, но увы...

Думаю что всё дело в DOM и в том что это динамически создаваемый "диалог", которого нет в основном дереве. Либо нужно как-то обновлять всё дерево, либо подойти к этому с другой стороны и свежей головой:-?
Любая помощь мне в пользу, помогите пожалуйста дорогие "фронтовики":thanks:

ksa 07.08.2015 09:15

Цитата:

Сообщение от kazakn
onclick='alert("+$("#updText").val()+")'

На то время, когда формируется твоя строка, элемента с ИД updText просто нет...

ksa 07.08.2015 09:16

Цитата:

Сообщение от kazakn
<input class='dbut' size='35' type='text' id='updText'></input>

Для инпута пиши

<input class='dbut' size='35' type='text' id='updText' />

kazakn 07.08.2015 12:01

В том то и дело, может как-то нужно обновить DOM, чтобы вписать этот элемент в него? Думал при открытии(инициализации) диалога это сделать, типо
.live("click", function(){ var idDialog = newDialog("<hr size='8' color='#46c765'>", data); return idDialog; });
но что-то не могу пазл сложить...

kazakn 07.08.2015 12:11

Сделал!!!!:write: Незнаю, честно, что послужило причиной, но мне кажется что убрав закрывающийся тег input, все получилось, либо обращение к элементу в alert...
var data = "<div align='center'><b>Запись №"+id+"</b><br><br><br><form id='updRec'>Введите значение:<br><br><input class='dbut' size='35' type='text' id='updText' /><br><br><br><br></form></div>";

var idDialog = newDialog("<hr size='8' color='#46c765'>", data, "alert($(\"#updText\").val())");

В любом случае - помогло!
Спасибо тебе ksa, за помощь +

BETEPAH 07.08.2015 12:15

<div id="target"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
function newDialog(dtitle, ddata)
  {
        var body = document.getElementById("target");
	var id = "dlgTest_"+Math.floor(Math.random(1,53)*1000);
	$("[id ^= dlg]").remove();
	
	var dclose = document.createElement("div");
	dclose.setAttribute("class", "dialogClose");
	dclose.setAttribute("onclick", "delDiv('"+id+"');");
	dclose.innerHTML = "X";
	
	var dialog = document.createElement("div");
	dialog.setAttribute("class", "dialogScript");
	dialog.setAttribute("id", id);
	//dialog.setAttribute("style", "display:none");
	
	dialog.innerHTML = dtitle+"<br>"+ddata;
	dialog.appendChild(dclose);
	body.appendChild(dialog);
	
	return id;
  }

var data = "<div align='center'><b>Запись №</b><br><br><br><form id='updRec'>Введите значение:<br><br><input class='dbut' size='35' type='text' id='updText'></input><br><br><br><br><input class='dbut' type='button' value='ОБНОВИТЬ' onclick='alert($(\"#updText\").val())'></input></form></div>";
var idDialog = newDialog("<hr size='8' color='#46c765'>", data);
</script>


P.S. опоздал на пару минут :)
Цитата:

Сообщение от kazakn
либо обращение к элементу в alert...

Вот именно. В если хотите оставить в onclick, то не надо исключать alert из кавычек.


Часовой пояс GMT +3, время: 15:14.