Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2015, 14:23
Интересующийся
Отправить личное сообщение для kazakn Посмотреть профиль Найти все сообщения от kazakn
 
Регистрация: 28.06.2012
Сообщений: 11

"Динамическое" получение значений input
Доброго дня форумчане!
Бьюсь головой второй день из-за того что не могу получить значение из 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 и в том что это динамически создаваемый "диалог", которого нет в основном дереве. Либо нужно как-то обновлять всё дерево, либо подойти к этому с другой стороны и свежей головой
Любая помощь мне в пользу, помогите пожалуйста дорогие "фронтовики"
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2015, 08:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от kazakn
onclick='alert("+$("#updText").val()+")'
На то время, когда формируется твоя строка, элемента с ИД updText просто нет...
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2015, 08:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от kazakn
<input class='dbut' size='35' type='text' id='updText'></input>
Для инпута пиши

<input class='dbut' size='35' type='text' id='updText' />
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2015, 11:01
Интересующийся
Отправить личное сообщение для kazakn Посмотреть профиль Найти все сообщения от kazakn
 
Регистрация: 28.06.2012
Сообщений: 11

В том то и дело, может как-то нужно обновить DOM, чтобы вписать этот элемент в него? Думал при открытии(инициализации) диалога это сделать, типо
.live("click", function(){ var idDialog = newDialog("<hr size='8' color='#46c765'>", data); return idDialog; });
но что-то не могу пазл сложить...
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2015, 11:11
Интересующийся
Отправить личное сообщение для kazakn Посмотреть профиль Найти все сообщения от kazakn
 
Регистрация: 28.06.2012
Сообщений: 11

Сделал!!!! Незнаю, честно, что послужило причиной, но мне кажется что убрав закрывающийся тег 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, за помощь +
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2015, 11:15
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

<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 из кавычек.

Последний раз редактировалось BETEPAH, 07.08.2015 в 11:18.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение значения input vladimircape jQuery 3 09.05.2015 21:54
Отправка по Ajax массива значений поля input hrundel jQuery 10 25.04.2014 22:13
Как передать в переменную массив значений из INPUT тега kapustnik Общие вопросы Javascript 3 19.04.2013 10:46
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Cчётчик значений value в элементе формы input type="text"? Surlik jQuery 8 04.04.2012 04:49