Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2014, 13:03
Аспирант
Отправить личное сообщение для izcian Посмотреть профиль Найти все сообщения от izcian
 
Регистрация: 17.08.2012
Сообщений: 53

Очистить value поля input type=text
Мне нужно очистить value в поле input type="text". Я сделал так, не знаю правильно? (код ниже).
<!DOCTYPE HTML>
<html>
  <head><meta charset="utf-8"></head>
  <body>
	
	<div id="text" >	   
	   <input type="text" value="2" maxlength="150" size="70" name="alias">	  
	 </div>
	<br/>
	<div id="text2" >
	   <div>
	   <input type="text" value="222" maxlength="150" size="70" name="alias">
	   </div>
	   <div>
	   <input type="text" value="333" maxlength="150" size="70" name="alias2">
	   </div>
	 </div>
<script>
    var childNodes = document.getElementById("text2").childNodes;
	
	for (var i=0; i<childNodes.length; i++) {	
		if (childNodes[i].type == 'text') {
		    childNodes[i].value = '';
		    //alert(childNodes[i].type);
		}
    }
</script>
  </body>
</html>

Фишка в том, там где div id="text" value очищается. Там где div id="text2" уже нет.

Подскажите пожалуйста, как можно в id="text2" так же очищать value?
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2014, 13:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,084

Сообщение от izcian
Подскажите пожалуйста, как можно в id="text2" так же очищать value?
выбрать по тегу input а не так как вы сейчас выбрали div и пробелы в div#text2
var childNodes = document.getElementById("text2").getElementsByTagName('input');// или так
    var childNodes = document.querySelectorAll('#text2 input');//или так
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2014, 13:27
Аспирант
Отправить личное сообщение для izcian Посмотреть профиль Найти все сообщения от izcian
 
Регистрация: 17.08.2012
Сообщений: 53

Упс, даже не ожидал, кажется нашел решение, вроде работает...Прошу гуру js взглянуть на мое творчество , если не сложно может какие есть замечания?

if (childNodes[i].type == 'text') {
		    childNodes[i].value = '';
		    
		} else if (childNodes[i].tagName == 'DIV') {
		
		    var new_childNodes = childNodes[i].childNodes;
			
			for(var b=0; b<new_childNodes.length; b++) {
			
			    if (new_childNodes[b].type) {
				    
					if (new_childNodes[b].type == 'text') {
					    if (new_childNodes[b].value != '')
						    new_childNodes[b].value = '';
					}
				}
			}
		}
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2014, 13:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Если поля изначально пустые, далее заполняются юзером и нужно их очистить, то все проще:
<form id="form">
    <input type="text" name="alias" />
    <input type="text" name="alias2" />
    <button type="button" onclick="form.reset()">Очистить</button>
</form>
<script>
    form.alias.value = form.alias2.value = 'abc';
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2014, 13:38
Аспирант
Отправить личное сообщение для izcian Посмотреть профиль Найти все сообщения от izcian
 
Регистрация: 17.08.2012
Сообщений: 53

Сообщение от рони Посмотреть сообщение
выбрать по тегу input а не так как вы сейчас выбрали div и пробелы в div#text2
var childNodes = document.getElementById("text2").getElementsByTagName('input');// или так
    var childNodes = document.querySelectorAll('#text2 input');//или так
Извините, что ввел Вас в заблуждение своим кодом. Дело вот в чем. Это кусок функции, которая должна очищать checked, selected или value в форме. Каждое поле заключено в div со своим id. И изначально неизвестно что в div, инпуты, селекты или textarea. Поэтому было решено применить такой подход.
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2014, 13:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

izcian, дапофиг. Ты не доволен querySelectorAll ? Почему?
А есть еще form.elements - коллекция всех контролов (правда там и кнопки тоже) - тоже удобно. Правда вроде не кроссбраузерно...
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2014, 13:44
Аспирант
Отправить личное сообщение для izcian Посмотреть профиль Найти все сообщения от izcian
 
Регистрация: 17.08.2012
Сообщений: 53

Сообщение от danik.js Посмотреть сообщение
Если поля изначально пустые, далее заполняются юзером и нужно их очистить, то все проще:
<form id="form">
    <input type="text" name="alias" />
    <input type="text" name="alias2" />
    <button type="button" onclick="form.reset()">Очистить</button>
</form>
<script>
    form.alias.value = form.alias2.value = 'abc';
</script>
danik.js понял Вас, но фишка в том, что нужно очищать определенные поля. Через ajax прилетает, что нужно очистить например поле с id="text2" (убрать чекеды, селекты или очистить value)
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2014, 13:52
Аспирант
Отправить личное сообщение для izcian Посмотреть профиль Найти все сообщения от izcian
 
Регистрация: 17.08.2012
Сообщений: 53

Сообщение от danik.js Посмотреть сообщение
izcian, дапофиг. Ты не доволен querySelectorAll ? Почему?
А есть еще form.elements - коллекция всех контролов (правда там и кнопки тоже) - тоже удобно. Правда вроде не кроссбраузерно...
danik.js выбрать всех всех потомков через querySelectorAll?



Не совсем по теме, подскажите пожалуйста а как очистить textarea, а то че-то ничего не нашел в инете?
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2014, 14:10
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от izcian
Через ajax прилетает, что нужно очистить например поле с id="text2"
Дык нафиг ты тогда итерируешься по всем childNodes. У тебя же есть айдишник - запроси его через getElementById и очищай (в зависимости от типа)
Сообщение от izcian
как очистить textarea
Абсолютно также как и текстовый инпут: element.value = "";
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 13.02.2014, 14:15
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от danik.js
У тебя же есть айдишник - запроси его через getElementById
Задам вопрос а в каких браузерах не работает прямое обращение по айдишнику?
id.value = "";
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ширина поля input text в зависимости от количества символов rekon87 (X)HTML/CSS 7 14.06.2013 22:55
Замена поля input на выподающий спискок fatory Элементы интерфейса 4 13.07.2012 10:07
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Как очистить все поля в определенном DIV DarkHacker jQuery 15 21.02.2012 11:39
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14