Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Очистка поля перед добавлением (https://javascript.ru/forum/misc/56171-ochistka-polya-pered-dobavleniem.html)

bee 02.06.2015 21:41

Очистка поля перед добавлением
 
Доброго времени!
есть скрипт
$(document).ready(function(event){
	$("#form1").submit(function(event){
		event.preventDefault();
			$("input[type=text]").each(function(){
				$("#rez").append($(this).val()+" ");
			});
return false;
});
});

который по нажатию на кнопку
<input type="submit" value="Ready" name="write" class = "button" onclick="location.href="html.by;">

объединяет текст из полей input в одно поле.

но проблема в том что при повторном нажатии на кнопку текст не обновляется а добавляется до существующего.
подскажите пожалуйста как можно сделать удаление старого текста при повторном нажатии на кнопку?

рони 02.06.2015 21:47

bee,
а что мешает обнулить данные в $("#rez").html("") перед циклом?

bee 02.06.2015 22:45

Цитата:

Сообщение от рони
а что мешает обнулить данные в $("#rez").html("") перед циклом?

незнание мешает(
Сработало! Большое спасибо!
Но возник еще вопрос, почему после изменения текста в поле #rez скрип перестает работать?

рони 02.06.2015 22:56

bee,
у вас может и нет никогда той страницы на которой вы когда-то нажали кнопку.
это же моментальная перезагрузка onclick="location.href="html.by;"
что это за элемент #rez ?

bee 02.06.2015 23:12

echo '<textarea name="text" id="rez" rows="10" cols="150" class="enter" "></textarea>' ."\n".'	';

рони 02.06.2015 23:23

bee,
для textarea используется val() а не append()
$(document).ready(function(event){
	$("#form1").submit(function(event){
		event.preventDefault();
            var str = ""
			$("input[type=text]").each(function(){
				str += $(this).val()+" ";
			});
        $("#rez").val(str);
});
});

рони 02.06.2015 23:29

bee,
<head lang="en">
        <meta charset="UTF-8">
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <title></title>
        <script>
          $(document).ready(function(event){
	$("#form1").submit(function(event){
		event.preventDefault();
            var str = ""
			$("input[type=text]").each(function(){
				str += $(this).val()+" ";
			});
        $("#rez").val(str);
});
});

        </script>
    </head>
    <body>


        <form action="json.txt" id="form1">
            <input type="text" name="bublik" value="1">
            <input type="text" name="bublik2" value="2">
            <input type="text" name="bublik" value="3">
            <input type="submit" value="Ready" name="write" class="button" >
        </form>
        <textarea name="text" id="rez" rows="10" cols="150" class="enter" ></textarea>



    </body>

bee 03.06.2015 08:52

БОЛЬШОЕ СПАСИБО!!!:thanks: Все отлично работает!

demoniqus 04.06.2015 16:16

50 копеек про использование значений текстовых полей в html-коде.
Напиши в любом поле выражение типа "a + b > c", про'append'и его и посмотри, что получилось. А получится шняга - символ > будет заменен на его эквивалент &lt;
Чтобы избежать такого эффекта, надо либо:
1) Использовать свойство объекта innerText
2) Для показа пользователю допускается делать так, как сделано у тебя, но для хранения правильного значения нужно иметь еще одно скрытое поле (либо type=hidden, либо display: none c type=text), в котором ты и можешь склеивать все значения.


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