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


Автор: Gold Dragon 25.11.2005, 16:41
Уже давно не писал в JS так что всё забыл... Вот код, не работает что-то... Нужно проверить бва поля на наличие чего-либо и отправить
Код

<script type="text/javascript">
 //проверка форм, по возвращает [true, false]
 function checkVorname(form) {
  var el, pat;
  for(var i=0; i<form.elements.length; i++) { //пробегаемся по всем элементам формы
    el=form.elements[i];
//проверяем только текстовые поля и только если есть чего говорить юзеру в случае ошибки
    if("textarea".indexOf(el.type)<0||el.getAttribute("check_message")==null) continue;
    if((pat=el.getAttribute("check_pattern"))!=null) { //если задан рег
       pat=new RegExp(pat, "g");
       if(!pat.test(el.value)) {
            alert(el.getAttribute("check_message"));
         return false;
       }
    } else if(/^\s*$/.test(el.value)) { //иначе просто проверка что поле не пустое
          alert(el.getAttribute("check_message"));
       return false;
    }
  }
  return true;
}
</SCRIPT>
<div align="center">

      <form method="get" onSubmit="return checkVorname(this);" check_message="Вы не указали название кабака!" action="index.php?pages=otz&go=1">
      <p class="txt9">{$info[err]}

      <table align="center" border="0" cellspacing="10">
        <tr>
                <td><p align="right" class="txt3">
                Название: <input type="text" size="30" name="name" value="">
        </tr>
        <tr valign="top">
                <td><p class="txt3">
                Комментарий:<br>
                <textarea cols="50" rows="10" name="dec" check_message="Вы не заполнили поле для сообщения"></textarea>
                </td>
        </tr>
        <tr valign="top">
                <td><p class="txt3">
                    Оценка:<br>
                    <b>-</b>
                        <input type="radio" value="1" name="bal">
                        <input type="radio" value="2" name="bal">
                        <input type="radio" value="3" name="bal">
                        <input type="radio" value="4" name="bal">
                        <input type="radio" value="5" name="bal" checked>
                        <input type="radio" value="6" name="bal">
                        <input type="radio" value="7" name="bal">
                        <input type="radio" value="8" name="bal">
                        <input type="radio" value="9" name="bal">
                        <input type="radio" value="10" name="bal">
                        <b>+</b>
                </td>
        </tr>
        <tr valign="top">
                <td><p align="center">
                <a class='snos1' href='javascript: void(0);' onclick='this.parentNode.submit()'><img src="images/go.gif" alt="Отправить запрос" border="0"></a>
                </td>
        </tr>
</table>
</form>

</div>


Автор: Guest 25.11.2005, 19:52
Red Dragon

Навскидку вижу, что ты сабмитишь parentNode ссылки, а это ячейка.

Автор: Ciber SLasH 25.11.2005, 20:56
В ссылке по onClick нужно сабмитить форму, а не родителя как ты пишешь. Как сказал Гость ты пытаешся засабмитить ячейку.

Пиши в onClick либо document.forms[0].submit() где в скобках номер формы во всём документе, либо задай форме ID и пиши document.getElementById(ID).submit() где ID - строка с идентификатором формы.

Автор: Zeroglif 25.11.2005, 21:27
Эт я опять гостем залогинился, сорри, никак не привыкну, что форма отправляется по-тихому...

Автор: Sardar 26.11.2005, 12:23
Red Dragon это же я дал тебе код с parentNode, только вёрстка была другая, там форма была прямым потомком ссылки. Далее по аналогии, сколько предков у ссылки, столько parentNode или данном случае лучше брать форму по id.

Автор: Gold Dragon 27.11.2005, 10:24
Sardar
да я и не спорю, я не стал просто там эту телу развивать smile
Добавлено @ 10:28
увлёкшись PHP совсем забыл JavaScript smile

Автор: Gold Dragon 28.11.2005, 10:37
Ничего не понимаю... форма всё равно отправляется без проверки
Код

<script type="text/javascript">
 function checkVorname(form) {
  var el, pat;
  for(var i=0; i<form.elements.length; i++) { 
    el=form.elements[i];
    if("textarea".indexOf(el.type)<0||el.getAttribute("check_message")==null) continue;
    if((pat=el.getAttribute("check_pattern"))!=null) {
       pat=new RegExp(pat, "g");
       if(!pat.test(el.value)) {
            alert(el.getAttribute("check_message"));
         return false;
       }
    } else if(/^\s*$/.test(el.value)) {
          alert(el.getAttribute("check_message"));
       return false;
    }
  }
  return true;
}
</SCRIPT>
        <DIV align="center">
            <FORM method="post" onSubmit="return checkVorname(this);" action="index.php?pages=otz&go=1">
                <p>Название:<INPUT type="text" size="30" check_message="Вы не указали название кабака!" name="name" value="Кикимора1">
                <p>Комментарий:<BR>
                <TEXTAREA cols="50" rows="10" name="dec" check_message="Вы не заполнили поле для сообщения"></TEXTAREA>
                <p>Оценка:<BR><B>-</B>                
                <INPUT type="radio" value="1" name="bal">                
                <INPUT type="radio" value="2" name="bal">                
                <INPUT type="radio" value="3" name="bal">                
                <INPUT type="radio" value="4" name="bal">                
                <INPUT type="radio" value="5" name="bal" checked>                
                <INPUT type="radio" value="6" name="bal">                
                <INPUT type="radio" value="7" name="bal">                
                <INPUT type="radio" value="8" name="bal">                
                <INPUT type="radio" value="9" name="bal">                
                <INPUT type="radio" value="10" name="bal">
                <p><A class='snos1' href='javascript: void(0);' onClick='document.forms[0].submit()'><IMG src="images/go.gif" alt="Отправить запрос" border="0"></A>
            </FORM>


Автор: Ciber SLasH 28.11.2005, 14:53
Сделай так:
1) в onSubmit формы впиши: onSubmit="return false"
2) вместо ссылки лучше юзай: <input type="image" onClick='if (checkVorname(this.form)) this.form.submit()' src='images/go.gif' alt="Отправить запрос">

Автор: Gold Dragon 28.11.2005, 15:38
Ну наконец то всё заработало!!!

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