Javascript.RU

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

Динамическая форма! INPUT c зависимым INPUT
Товарищи столкнулся с такой проблемой, может кто посоветует что.
Требуется создать динамическую форму в которой есть стартовый INPUT аля вопрос и зависящий от него второй INPUT, аля вариант ответа.
Вот столкнулся с такой проблемой: Динамически создавать и удалять сами вопросы это не проблема(Удаление среднего вопроса а не только последнего проходит на ура). Но вот столкнулся с проблемой удаления в вариантах вопроса не последнего ответа а например второго из пяти и с сохранением всех введенных данных + переиндексирование у INPUTа порядкового номера чтобы по порядку выстроились с 1-4 пез пробелов!
Люди может кто посоветует в какую сторону "Грести"?
Заранее благодарен
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2010, 19:37
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

shleify, сделай тестовый пример и на нем будем тренироваться...
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2010, 19:50
Интересующийся
Отправить личное сообщение для shleify Посмотреть профиль Найти все сообщения от shleify
 
Регистрация: 02.12.2010
Сообщений: 10

Все всем спасибо сообразили и выкрутились! Если кому надо выложу код! Оч интересная штука получилась!
<script type="text/javascript">

//==============================================================================================================================
function createQuestionLabel(id)
{
	var questionInp = document.createElement( "questionLabel" );
	questionInp.innerHTML = "<a>Вопрос №"+id+"</a><br>";
	return questionInp;
}
function createQuestionInp(id,value)
{
	var questionInp = document.createElement( "input" );
	questionInp.type = "text";
	questionInp.name = "q" + id;
	questionInp.id = "q" + id;
	questionInp.value = value ;
	return questionInp;
}
function createDeleteQuestionButton(id)
{
	var buttonDelete = document.createElement( "input" );
	buttonDelete.type = "button";
	buttonDelete.value = "У";
	buttonDelete.id = "delQButton" + id;
	buttonDelete.onclick = function() { deleteQuestion(id);  };
	return buttonDelete;
}
function createQuestionDiv(id)
{
	var questionDiv = document.createElement( "div" );
	questionDiv.id = "qDiv" + id;
	return questionDiv;
}
function createAddAnswerButton(id)
{
	var addAnswerButton = document.createElement( "input" );
	addAnswerButton.type = "button";
	addAnswerButton.value = "Добавить ответ";
	addAnswerButton.name = "qd_sanswer_b";
	addAnswerButton.id = "addAButton" + id;
	addAnswerButton.onclick = function() { addAnswer(id,'');  };
	return addAnswerButton;
}
function createAnswerDiv(id)
{
	var answerDiv = document.createElement( "div" );
	answerDiv.id = "aDiv" + id;
	return answerDiv;
}
function createAnswerCount(id)
{
	var answerCount = document.createElement( "input" );
	answerCount.type = 'hidden';
	answerCount.id = "countA" + id;
	answerCount.value = '0';
	return answerCount;
}
function createAnswerInp(questionId,answerId,value)
{
	var answerInp = document.createElement( "input" );
	answerInp.type = "text";
	answerInp.name = "q"+questionId+"a" + answerId;
	answerInp.id = "q"+questionId+"a" + answerId;
	answerInp.value = value;
	return answerInp;
}
function createDeleteAnswerButton(questionId,answerId)
{
	var buttonDelete = document.createElement( "input" );
	buttonDelete.type = "button";
	buttonDelete.value = "У";
	buttonDelete.id = "delAButton" + answerId;
	buttonDelete.onclick = function() { deleteAnswer(questionId,answerId);  };
	return buttonDelete;
}
function addQuestion(text){
	countQ = document.getElementById("countQ").value;
	var parentNode = document.getElementById("placeToAdd");
	var questionDiv = createQuestionDiv(++countQ);
	parentNode.appendChild(questionDiv);
	var questionLabel = createQuestionLabel(countQ);
	questionDiv.appendChild(questionLabel);
	var questionInp = createQuestionInp(countQ,text);
	questionDiv.appendChild(questionInp);
	var buttonDelete = createDeleteQuestionButton(countQ);
	questionDiv.appendChild(buttonDelete);
	var addAnswerButton = createAddAnswerButton(countQ);
	questionDiv.appendChild(addAnswerButton);
	var answerDiv = createAnswerDiv(countQ);
	questionDiv.appendChild(answerDiv);
	var answerCount = createAnswerCount(countQ);
	questionDiv.appendChild(answerCount);
	document.getElementById("countQ").value=countQ;
}
function addAnswer(questionId,text){
	countA = document.getElementById("countA"+questionId).value;
	var parentNode = document.getElementById("aDiv"+questionId);
	var answerInp = createAnswerInp(questionId,++countA,text);
	parentNode.appendChild(answerInp);
	var buttonDelete = createDeleteAnswerButton(questionId,countA);
	parentNode.appendChild(buttonDelete);
	document.getElementById("countA"+questionId).value = countA;
}
function deleteQuestion(id){
	var parentNode = document.getElementById( "placeToAdd");
	var countQ=document.getElementById("countQ").value;
	var questions = new Array();
	var answers = new Array();
	for (var i=1; i<=countQ; i++)  {
		questions[i]= document.getElementById("q"+i).value;
		countA=document.getElementById("countA"+i).value;
		answers[i]=new Array();
		for (var a=1; a<=countA; a++)  {
			answers[i][a]= document.getElementById("q"+i+"a"+a).value;
		}	
	}
	questions.splice(id,1);
	answers.splice(id,1);
	while (parentNode.firstChild) {
		parentNode.removeChild(parentNode.firstChild);
	}
	countQ = 0;
	document.getElementById("countQ").value=0;
	var parentAnswerNode;
	for(i=1; i<questions.length; i++){
		var question = questions[i];
		addQuestion(question);
		countA=0;
		parentAnswerNode = document.getElementById("aDiv"+i);
		//alert(questions[i].length);
		for(a=1; a<answers[i].length; a++){
			addAnswer(i,answers[i][a]);		
		}
	}
}
function deleteAnswer(questionId,answerId){
	var parentNode = document.getElementById( "aDiv"+questionId);
	var countA=document.getElementById("countA"+questionId).value;
	var answers = new Array();
	for (var i=1; i<=countA; i++)  {
		answers[i]= document.getElementById("q"+questionId+"a"+i).value;
	}
	answers.splice(answerId,1);
	while (parentNode.firstChild) {
		parentNode.removeChild(parentNode.firstChild);
	}
	countA = 0;
	document.getElementById("countA"+questionId).value=0;
	for(i=1; i<answers.length; i++){
		addAnswer(questionId,answers[i]);
	}
}
</script>


<form id="f" method="post" enctype="multipart/form-data" onsubmit="return false">
		<table cellpadding='2' cellspacing='0'>
			
	   			<tr valign='top'>

							<button type='button' onclick="addQuestion('')" style='width: 140px; height: 21px'>Добавить вопрос</button>
							<div id="placeToAdd"></div></td>


	   			</tr>
	    			<tr>
	   					
	   				<input name='countQ' type="hidden"  id="countQ" value="0"></td>
	   				<td align='right'>
				</td>
				  <tr>
	    			<td align='right'></td>
	    			<td></td>
	    		</tr>
			</tr></table></form>
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2010, 19:50
Интересующийся
Отправить личное сообщение для shleify Посмотреть профиль Найти все сообщения от shleify
 
Регистрация: 02.12.2010
Сообщений: 10

Закрывайте но не удаляйте! Оч хорошая вестч!
Ответить с цитированием
  #5 (permalink)  
Старый 02.12.2010, 20:49
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от shleify
Оч интересная штука получилась!
Где именно?
Сообщение от shleify
Оч хорошая вестч!
Где именно?
Ответить с цитированием
  #6 (permalink)  
Старый 02.12.2010, 22:18
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Вау круто!!! я так думаю что всё это можно было вмесить макс строк в десять))) удалять не стоит эт точно)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Форма динамическая s4sha1 Элементы интерфейса 2 05.01.2009 17:09
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55