Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как очистить textarea после отправки формы?


Автор: Lyapko 24.9.2005, 23:25
И вот опять я со своими вопросами!!!! smile smile

У меня после отправки сообщения не очищаеться поле ввода текста, как это исправить smile

Спасибо за ранее!!!

Автор: Wolf1994 25.9.2005, 13:53
Цитата
Странно что не очищается форма

Она не очищается, поскольку не перезагружается - перезагружается только окно чата в iframe.

Автор: Lyapko 25.9.2005, 15:05
И что нет ни какого скрипта, чтоб перезагружал, после нажатия на SUBMIT ?

Автор: Sardar 25.9.2005, 15:07
Цитата(Lyapko @ 25.9.2005, 14:05)
И что нет ни какого скрипта, чтоб перезагружал, после нажатия на SUBMIT ?

Неужели тебе так сложно пробежаться по всем элементам(вернее только по текстовому полю smile ) и очистить их? smile

Автор: Lyapko 25.9.2005, 15:10
Мне то всё равно, А вот пользователям...........
Добавлено @ 15:16
Какой элемент может отвечать за обновление поля???

Автор: Wolf1994 25.9.2005, 15:49
Вот код (примерный, для анализа):
Код

<script>
function clean()
{
 document.one.name.value="";
 document.one.message.value="";
}
</script>


Код

<form name="one" method="post" action="form_proc.php" target="_blank">

Name:<br>
<input type="text" name="name" size="35" style="font: 10px"><br>
Message:<br>
<textarea name="message"></textarea>

<input type="submit" value="Далее" onclick="clean()">
</form>

Автор: Lyapko 25.9.2005, 16:00
Оно его очищает как кнопка рессет, а отправлять не хочет smile

Автор: sergejzr 25.9.2005, 16:15
Код

<form name="one" method="post" id="myform" action="form_proc.php" target="_blank" >
Name:<br>
<input type="text" name="name" size="35" style="font: 10px"  id="myname"><br>
Message:<br>
<textarea name="message" id="mymessage"></textarea>
<input type="button" value="Далее" onclick="document.getElementById('myform').submit(); document.getElementById('mymessage').value=''; document.getElementById('myname').value='';">
</form>

Автор: Lyapko 25.9.2005, 16:21
Спасибо тебе большое, smile smile smile

Автор: Lyapko 25.9.2005, 19:18
Да а если это тег не <textarea> а <input type="text">

И когда в поле нажимаешь Enter не очищаеться. Как здесь быть??? smile
Я кажусь таким ТУПЫМ, мне аж стыдно!!!! Но JS я абсолютно не знаю!!!!

Автор: Sardar 26.9.2005, 15:46
Цитата(Lyapko @ 25.9.2005, 18:18)
Да а если это тег не <textarea> а <input type="text">

Спросил не подумав и не проверив? smile


Цитата(Lyapko @ 25.9.2005, 18:18)
И когда в поле нажимаешь Enter не очищаеться. Как здесь быть???

Лови onsubmit на форме, в остальном код такой же, только submit() вызывать не нужно, а просто return true, форма сама оправиться.

Автор: Guest 27.9.2005, 19:51
Что-то не получаеться smile smile

Автор: Lyapko 27.9.2005, 19:54
Я же сказал что JS не знаю абсолютно!!!
Цитата
Лови onsubmit на форме, в остальном код такой же, только submit() вызывать не нужно, а просто return true, форма сама оправиться.

Это мне просто ничего не говорит smile

Автор: o.s.a. 27.9.2005, 20:38
Цитата(Lyapko @ 27.9.2005, 21:54)
Я же сказал что JS не знаю абсолютно!!!


Lyapko, чего же ты тогда хочешь?
Никто не будет тебе втирать азы JS, а уж тем более писать готовый скрипт.
Тебе лишь помогут найти пути решения задачи.
В твоем случае стоит хоть немного почитать учебники.

Автор: Sardar 28.9.2005, 00:31
Цитата(Lyapko @ 27.9.2005, 18:54)
Я же сказал что JS не знаю абсолютно!!!

Млин ну что за юзер нынче пошёл! smile

Код
<script type="text/javascript">
<!--
function clearForm(f) {
  window.setTimeout(function() {
    f.elements.message.value=f.elements.name.value='';
  }, 100);
}
//-->
</script>
<form method="post" action="form_proc.php" target="_blank" onsubmit="clearForm(this); return true;">
Name:<br>
<input type="text" name="name" size="35" style="font: 10px"><br>
Message:<br>
<textarea name="message"></textarea>
<input type="submit" value="Dalee">
</form>

Автор: Lyapko 29.9.2005, 02:26
Не выходит, ладно извените что побеспокоил, и спасиб за помощь smile

Автор: sergejzr 29.9.2005, 02:53
Sardar, у тебя очищает прежде чем отправить. В этом в принципе вся трабла тут и есть.
Я всё равно не пойму, почему надо очищать, у меня в браузерах во всех и так очищается. У меня подозрения, что это php после отправки формы вписывает значения туда...

А вообще по Тз так надо в принципе..
Код

<script>
function clearAndSend(event)
{
   document.getElementById('myform').submit();
   document.getElementById('mymessage').value=document.getElementById('myname').value='';
}

</script>
<form name="one" method="post" id="myform" action="form_proc.php" target="_blank" onkeydown="charCode=event.keyCode?event.keyCode:event.charCode; if(charCode==13) clearAndSend(event);" >
Name:<br>
<input type="text" name="name" size="35" style="font: 10px"  id="myname"><br>
Message:<br>
<textarea name="message" id="mymessage"></textarea>
<input type="button" value="Далее" onclick="clearAndSend(event);">
</form>

Lyapko, не надо извинений. Просто нехорошо было вот это:
Цитата(Lyapko @ 25.9.2005, 18:18)
Да а если это тег не <textarea> а <input type="text">

Сразу видно, что даже глаза на код не кинул... Никакого удовольствия коды писать так нет...

Автор: Wolf1994 29.9.2005, 10:19
Цитата
Я всё равно не пойму, почему надо очищать, у меня в браузерах во всех и так очищается.

Там два фрейма. Один, с чатом - перезагружается, второй, с формой - статичен.

Автор: Sardar 29.9.2005, 17:09
Цитата(sergej @ 29.9.2005, 01:53)
Sardar, у тебя очищает прежде чем отправить

Разве, я же на таймаут поставил, видать время маленькое)

Автор: sergejzr 29.9.2005, 17:23
Цитата(Wolf1994 @ 29.9.2005, 09:19)
Там два фрейма. Один, с чатом - перезагружается, второй, с формой - статичен.

Ну тогда просто onsubmit должно работать (как Сардар написал или твой первый пример). У него с фрэймами трабла, а не с очищением smile

Цитата(Sardar @ 29.9.2005, 16:09)
Разве, я же на таймаут поставил, видать время маленькое)

наверное..

Автор: Lyapko 30.9.2005, 00:01
smile smile smile smile
Спасибо тебе sergej.z, ты лучший smile

Да и всем кто помогал!!! Спасибо ребята, я на 7-ом небе от счастья!!!

Автор: Lyapko 6.10.2005, 22:22
Возникла теперь маленькая проблемка, это окно бывает раньше очишаеться чем отправляеться сообщение, и поэтому оно не всегда отправляеться, можно как то таймер поставить, после нажатия на сабмит, или в поле ентер smile smile

Автор: sergejzr 6.10.2005, 22:38
Опять таймер? smile
У тебя форма отправляется во фрейме, так? Значит очищать всё надо по событию onload того фрейма, в котором эта форма.
Слушай, из за того, что ты вопрос неясно ставишь уже дюжину разных решений тебе написали и ессно неправильных. Формулируй правильно, что хочешь спросить, давай код и ссылку на рессурс. Иначе здесь гадать ещё долго будем. А время деньги, как говорит наш любимый шеф.

Автор: Wolf1994 6.10.2005, 23:13
Можно сделать всё совсем просто. По нажатии сабмита загружать оба фрейма (с мессаджами и формой) в основное окно. Уверен большинство чатов так и делает и не изобретает велосипеда.

Автор: Lyapko 8.10.2005, 07:39
sergej.z
Теперь текст не вводиться в это поле smile , я оставил return false, можешь проверить.

Автор: Sardar 8.10.2005, 11:24
Lyapko выкладывай весь свой код, конкретно нужна структура твоих фреймов и форм. Задолбало, такую плёвую задачу уже вторую неделю... стыдно smile

Автор: Lyapko 8.10.2005, 11:48
Код

<HTML>

<HEAD>

<link href="styles/phaos.css" rel="stylesheet" type="text/css">
    <meta http-equiv="refresh">
<BASE TARGET="right_side">
</HEAD>

 <script type="text/javascript">

name = 'mess';
cursor = 0;

function obj()    { 
    str = document.getElementById(name); 
                }

function position()
{
    if (!document.selection) { cursor = str.selectionStart; }
}


function InsertText(text)
{

    if(navigator.userAgent.indexOf('Opera')==-1) { str.focus(); }
    if (document.selection) { document.selection.createRange().text = text + ' '; }

    else
    {
         var strFirst = str.value.substr(0, cursor);
        var strEnd   = str.value.substr(cursor, str.value.length);

         if(strFirst=='') { var raz1 = ''; var raz2 = ' '; var num = 1; }
        else
        {
        var raz1 = '';  var raz2 = ''; var num = 0;
        if (!/^.*(\s{1,})$/.test(strFirst)) { raz1 = " "; num++; }
        if (!/^(\s{1,}).*$/.test(strEnd)) { raz2 = " "; num++; }
        }
        str.value = strFirst + raz1 + text + raz2 + strEnd;
        cursor = strFirst.length + text.length + num;
        str.selectionStart = str.selectionEnd = cursor;
    }
}

function clearAndSend(event)
{
/* ([b]sergej.z[/b])здесь было:
   document.getElementById('one').submit();
такого элемента у тебя на странице не существует!!!! Это ты и сам мог бы проверить!
надо:
*/
 document.getElementById('myform').submit(); 
document.getElementById('usertext').value=document.getElementById('usertext').value='';
}

function AutoScroll()
{
window.scrollBy(0,5000);
}
function AutoRe()
{
setInterval("AutoScroll()", 100);
}

</script>


</head>

<body onload='obj();document.getElementById(name).focus();'>
<!--([b]sergej.z[/b])И здесь, надо возарвтить false
<form action="right_side.php"  method="POST" name="one" id="myform"
 onkeydown="charCode=event.keyCode?event.keyCode:event.charCode; if(charCode==13) clearAndSend(event);">
То есть:
-->
<form action="right_side.php"  method="POST" name="one" id="myform"
 onkeydown="charCode=event.keyCode?event.keyCode:event.charCode; if(charCode==13) clearAndSend(event); return false;">
<a href='javascript:void(0)' onclick='InsertText(":smile:")'><img src="smile/smile.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":biggrin:")'><img src="smile/biggrin.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":cry:")'><img src="smile/cry.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":eek:")'><img src="smile/eek.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":razz:")'><img src="smile/razz.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":cool:")'><img src="smile/cool.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":mad:")'><img src="smile/mad.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":rolleyes:")'><img src="smile/rolleyes.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":redface:")'><img src="smile/redface.gif" border="0"></a>
<a href='javascript:void(0)' onclick='InsertText(":wink:")'><img src="smile/wink.gif" border="0"></a><br>

<form action=action='javascript:void(0)'>
    <input type='text' id='mess' name="usertext" onclick='position()' onblur='position()' size='60' onsubmit="document.getElementById('myform').value='';">

    <input type="submit" value="Отправить" onclick="clearAndSend(event);">
 
</form>





  </form>


</body>
</HTML>



 ! 
 

Пользуемся кнопкой код ВЕРНО!

Автор: Sardar 8.10.2005, 12:31
Во первых формы друг в друга не вкладываються. Во вторых что за action=action? В третьих постоянная прокрутка не даст юзеру просмотреть мессаги выше. В четвёртых при медленных коннектах мессага не будет отсылаться, т.к. очищаться будет раньше.

Перейдём на следующий этап. Открой новый топик, детально выкложи структуру фреймов, а то чую тоже нагородил. Затем выкладываешь как к тебе мессаги приходят. Все вопросы порешаем. Топ назови как: Пишем клиента для чата.

Автор: vintyara 21.10.2006, 12:28
sergejzr, вопросец есть smile 
Твой код 
Код

<form name="one" method="post" id="myform" action="form_proc.php" target="_blank" >
Name:<br>
<input type="text" name="name" size="35" style="font: 10px"  id="myname"><br>
Message:<br>
<textarea name="message" id="mymessage"></textarea>
<input type="button" value="Далее" onclick="document.getElementById('myform').submit(); document.getElementById('mymessage').value=''; document.getElementById('myname').value='';">
</form>


рулит при нажатии мышой на кнопку сабмита. если давишь кнопку ентер - оно сабмитит, но скрипт уже не срабатывает и не очищает форму.
какое событие для ентера использовать ?

Автор: sergejzr 21.10.2006, 12:35
ещё у формы есть событие onsubmit и у фрейма onload можно или то, или другое использовать.

Автор: vintyara 21.10.2006, 13:13
sergejzr, 
я зделал :

Код

...
<form name="send_to_chat_form" method="post" id="send_to_chat_form" action="post.php" target="engine" onsubmit="document.getElementById('send_to_chat_form').submit(); document.getElementById('send_to_chat').value=''">
...


что-то перестал "сабмитить" smile Хотя когда 

"document.getElementById('send_to_chat_form').submit(); document.getElementById('send_to_chat').value=''"

было в онклике на кнопочке сабмит - работало !

Автор: Nicholas_S 21.10.2006, 14:45
Ты из события onSubmit вызываешь его-же.
Предлагаю решение, но оно, имхо, для извращенцев  smile 
Код

<form method="post" id="send_to_chat_form" target="_blank"
   onsubmit="if (!this.flag)
                    {
                       this.flag=1;
                       this.submit();
                       document.getElementById('send_to_chat').value='';
                       this.flag=0;
                       return false;
                    }">

Разумеется, код лучше вынести в отдельную функцию.
А еще лучше повесить на кнопку, как было раньше.

Автор: vintyara 21.10.2006, 16:01
Nicholas_S, да ) я в яве не силён конечно, но не красиво как-то smile

Автор: Nicholas_S 21.10.2006, 17:25
vintyara, хотишь красиво?

Код

<script type="text/javascript">
  function mySubmit(frmObj)
  {
    if (!frmObj.flag)
    {
      frmObj.flag=1;
      frmObj.submit();
      document.getElementById('send_to_chat').value='';
      frmObj.flag=0;
      return false;
     }
     return true;
  }
</script>

<form method="post" id="send_to_chat_form" target="_blank"   onsubmit="return mySubmit(this)">

Автор: vintyara 24.10.2006, 22:44
Nicholas_S, 
пасиба smile ! работает smile !

Автор: SelenIT 25.10.2006, 01:46
По-моему, код Sardarа тоже работает. Даже такой минимализм работает:
Код

...  onsubmit="var f=this;setTimeout(function(){f.reset()},1);" ...


А если непременно хочется подменить штатный сабмит - почему бы не сделать так?
Код

...  onsubmit="this.submit();this.reset();return false" ...


Зачем еще флаги какие-то?

Автор: 12345c 25.10.2006, 02:56
Код
<form ... onsubmit="this.submit();this.reset();return!1">
 - на все случаи, кроме скриптового вызова и когда по умолчанию поля не пустые.

Добавлено @ 02:57 
скриптового вызова == форма.submit();

Автор: nz1 13.1.2008, 23:11
Цитата(Sardar @ 28.9.2005,  00:31)
Цитата(Lyapko @  27.9.2005,  18:54)
Я же сказал что JS не знаю абсолютно!!!

Млин ну что за юзер нынче пошёл! smile

Код
<script type="text/javascript">
<!--
function clearForm(f) {
  window.setTimeout(function() {
    f.elements.message.value=f.elements.name.value='';
  }, 100);
}
//-->
</script>
<form method="post" action="form_proc.php" target="_blank" onsubmit="clearForm(this); return true;">
Name:<br>
<input type="text" name="name" size="35" style="font: 10px"><br>
Message:<br>
<textarea name="message"></textarea>
<input type="submit" value="Dalee">
</form>

спасибо, работает smile 

применил здесь в своем чатике - netzeo.info/Minichat.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)