Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

проблема с событием onSubmit   Найти похожие ветки 

 
исследователь   (2007-10-17 13:51) [0]

Здравствуйте, уважаемые! Понимаб, что оффтоп, но возникла следующая проблема: при использовании данного события скрипт, которому я передаю данные, перестает нормально считывать данные из переменной $_POST (пробовал с $_GET - результат тот же). Вот код формочки (больше ничего кроме <html>..</html> и прочих вспомогательных тегов, на странице нет):


<form action="php.php" method="post" name="anketa" onSubmit="return mydisable()">
<table cellspacing="0" cellpadding="0">
 <tr>
  <td colspan="2"> <p>Введите пожалуйста свои данные</p>
 <tr align="left" valign="middle">
  <td>
   <p>Имя*</p>
  <td >
   <input type="Text" id="name" size="15" maxlength="50" name="firstname" onKeyDown="check_()" onKeyPress="check_()" onKeyUp="check_()" value=""><br>
 <tr align="left" valign="middle">
  <td>
   <p>Фамилия*</p>
  <td >
   <input type="Text" id="fam" size="15" maxlength="50" name="surname" onKeyDown="check_()" onKeyPress="check_()" onKeyUp="check_()" "" value=""><br>
 <tr align="left" valign="middle">
  <td>
   <p>e-mail*</p>
  <td>
   <input type="Text" name="mail" id="mail" size="15" maxlength="50" onKeyDown="check_()" onKeyPress="check_()" onKeyUp="check_()" value=""><br>
 <tr>
  <td colspan="2" align="center">
   <input type="submit"  value="Отправить" name="ok" id="ok" disabled >    <input type="reset" name="cancel" id="cancel">  
</table>
 </form>


код яваскрипта, подключаемого к странице:


// Функиця проверки наличия в текстовых полях формы
function check_(){
 if ((document.getElementById("name").value.length!=0)&&(document.getElementById("ma il").value.length!=0)&&(document.getElementById("fam")!=0)){  
  document.getElementById("ok").disabled=false;
  }
 else
   document.getElementById("ok").disabled=true;
 return true    
};

// Функция установления параметра disable для всех элементов формы при отправке данных в php-файл
function mydisable(){
    var a=new Array("name","fam","mail","ok","cancel");
 for (var i=0;i<a.length;i++)
  document.getElementById(a[i]).disabled=true
 return true;
}

function my_f(){
 alert("переменная:"+disable);      
 if (disable)
  parent.document.getElementById("name").disabled=false
 else
  parent.document.getElementById("name").disabled=true;  
 return true;
}


код php.php


<?php
//Проверка правильности ввода имени
if(preg_match("/^[a-zA-Z]+$/", $_POST["firstname"])) {
 $disable=0; //$disable-переменная, в которую заноситься значение аттрибута disabled для текстового поля name
 echo "Данные введены правильно\n";}
else{
 $disable=1;
 echo "Данные введены НЕ правильно\n";}
echo "<script type="text/javascript" src="scripts.js" language="JavaScript"></script>\n";
echo "<script type="text/javascript" language="JavaScript">\n";
echo "var disable=".$disable."\n";
echo "my_f()\n";
echo "</script>\n";
?>


 
_xxx_   (2007-10-17 15:01) [1]


function mydisable(){     var a=new Array("name","fam","mail",
"ok","cancel");  for (var i=0;i<a.length;i++)   document.
getElementById(a[i]).disabled=true  return true; }


Зачем disabl"ить все элементы? После этого их "value" исключается из данных, отсылаемых на сервер. Насколько я знаю. Проще так:
<input type="submit"  value="Отправить" name="ok" id="ok" disabled onClick="javascript:document.getElementById("ok").disabled=true;">
(Отключаем кнопку для исключения повторной отправки).
К слову о самой функции - смысл городить забор когда есть массив document.forms["anketa"].elements ?

И в пхп-скрипте -  disabl"ить правильно заполненные поля, - это чтобы оставить неправильные, чтоб пользователю было явно указано? А вдруг пользователь захочет еще что-то исправить? Дурной тон. Обычно это дело помечают звездочкой или текстом красного цвета.


 
исследователь   (2007-10-17 16:40) [2]

Спасибо. Код не мой, попросили помочь с одной проблемой, а столкнулся еще и с этой. Про диазбледные элементы не знал. А если сделать enabled=false?


 
_xxx_   (2007-10-17 17:41) [3]


> если сделать enabled=false?

Помоему, то-же самое только вид сбоку...попробуй )) Но опять таки, дурной тон, имхо. Если уж так приспичило, можно использовать атрибут "readonly".



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.283 c
15-1192433128
31512
2007-10-15 11:25
2007.11.18
Тестирование программного обеспечения


2-1193686793
VDnn
2007-10-29 22:39
2007.11.18
TExcelApplication


3-1182264642
Fredy314
2007-06-19 18:50
2007.11.18
Выборка за месяц по дням


15-1192398990
Petr V. Abramov
2007-10-15 01:56
2007.11.18
как запрораммировать на Delphi


2-1193174372
smartleds
2007-10-24 01:19
2007.11.18
Господа подскажите плз , не пойму в чем ошибка