Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Очистить value поля input type=text (https://javascript.ru/forum/misc/45074-ochistit-value-polya-input-type%3Dtext.html)

izcian 13.02.2014 13:03

Очистить 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?

рони 13.02.2014 13:25

Цитата:

Сообщение от izcian
Подскажите пожалуйста, как можно в id="text2" так же очищать value?

выбрать по тегу input а не так как вы сейчас выбрали div и пробелы в div#text2
var childNodes = document.getElementById("text2").getElementsByTagName('input');// или так
    var childNodes = document.querySelectorAll('#text2 input');//или так

izcian 13.02.2014 13:27

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

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 = '';
					}
				}
			}
		}

danik.js 13.02.2014 13:37

Если поля изначально пустые, далее заполняются юзером и нужно их очистить, то все проще:
<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>

izcian 13.02.2014 13:38

Цитата:

Сообщение от рони (Сообщение 297433)
выбрать по тегу input а не так как вы сейчас выбрали div и пробелы в div#text2
var childNodes = document.getElementById("text2").getElementsByTagName('input');// или так
    var childNodes = document.querySelectorAll('#text2 input');//или так

Извините, что ввел Вас в заблуждение своим кодом. Дело вот в чем. Это кусок функции, которая должна очищать checked, selected или value в форме. Каждое поле заключено в div со своим id. И изначально неизвестно что в div, инпуты, селекты или textarea. Поэтому было решено применить такой подход.

danik.js 13.02.2014 13:43

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

izcian 13.02.2014 13:44

Цитата:

Сообщение от danik.js (Сообщение 297436)
Если поля изначально пустые, далее заполняются юзером и нужно их очистить, то все проще:
<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)

izcian 13.02.2014 13:52

Цитата:

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

danik.js выбрать всех всех потомков через querySelectorAll?



Не совсем по теме, подскажите пожалуйста а как очистить textarea, а то че-то ничего не нашел в инете?

danik.js 13.02.2014 14:10

Цитата:

Сообщение от izcian
Через ajax прилетает, что нужно очистить например поле с id="text2"

Дык нафиг ты тогда итерируешься по всем childNodes. У тебя же есть айдишник - запроси его через getElementById и очищай (в зависимости от типа)
Цитата:

Сообщение от izcian
как очистить textarea

Абсолютно также как и текстовый инпут: element.value = "";

Vlasenko Fedor 13.02.2014 14:15

Цитата:

Сообщение от danik.js
У тебя же есть айдишник - запроси его через getElementById

Задам вопрос а в каких браузерах не работает прямое обращение по айдишнику?
id.value = "";


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