Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Странно себя ведет простейшая проверка введенных данных в форме (https://javascript.ru/forum/misc/22079-stranno-sebya-vedet-prostejjshaya-proverka-vvedennykh-dannykh-v-forme.html)

San4eZ 05.10.2011 15:46

Странно себя ведет простейшая проверка введенных данных в форме
 
Товарищи, мой мозг просто взрывается... Суть проблемы:
Есть система управления конструкциями, сделана в виде веб-приложения, написана на пхп, но не это главное. В системе несколько форм вывода, редактирования и добавления информации в БД. Возникла необходимость написать простейшую проверку на корректность введенных данных. Поскольку формы однотипные то приведу один пример кода:
function check_form(form4){
if(form4.month.value==''){
alert('Необходимо заполнить поле Месяц!');
form4.month.focus();
return false;
}else if(form4.year.value==''){
alert('Необходимо заполнить поле Год!');
form4.year.focus();
return false;
}else if(form4.client_title1.value=='' || form4.client_title2.selectedIndex == 0){
alert('Необходимо заполнить поле Наименование клиента!');
form4.client_title1.focus();
return false;
}else if(form4.order_doc.value==''){
alert('Необходимо заполнить поле Документ!');
form4.order_doc.focus();
return false;
}else if(form4.order_cost.value==''){
alert('Необходимо заполнить поле Цена!');
form4.order_cost.focus();
return false;
}else{
return true;
}
}


Проблема в том что валидация работает через пень-колоду, то есть допустим вчера вечером все прекрасно отрабатывает, сегодня утром уже не работает(причем на одной форме работает, на второй нет, на третьей опять все в норме), и это при том что код никто не правил и даже не смотрел на него(и на пхп-шный в том числе). Почему такое может происходить?

ksa 05.10.2011 16:13

Цитата:

Сообщение от San4eZ
Почему такое может происходить?

То мубуть не в скрипте дело... А в хтмл-разметке...

Полного тестового примера нет. Перечня ошибок нет. Оплата так же молчёк... :D

San4eZ 05.10.2011 16:46

а что не так может быть в хтмл разметке?
<form action="add/event.add.php" method="post" name="form4" onsubmit="return check_form(this);">
        <input type="hidden" name="cat" value="<? echo $cat; ?>">
        <input type="hidden" name="event" value="orders.add">
        <input type="hidden" name="data" value="<? echo date("Y-m-d H:i:s"); ?>">
        <tr height="40">
        	<th width="200" align="left" valign="middle"><? echo $order_arr[3]; ?>:</th>
            <td valign="middle"><input type="text" name="month" style ="width: 100px;">&nbsp;&nbsp;&nbsp;<b><? echo $order_arr[4]; ?></b>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input type="text"  name="year" style="width: 185px;"/></td>
        </tr>
        <tr height="40">
        	<th width="200" align="left" valign="middle"><? echo $order_arr[5]; ?>:</th>
            <td valign="middle"><input type="text" name="client_title1" style="width:140px;">&nbsp;&nbsp;
            <select NAME="client_title2" SIZE=1 style="width:200px;">            
				<?php mysql_query('SET NAMES cp1251');
				$query3 = mysql_query ("select * from `clients` GROUP BY `client_title` ") or die (mysql_error());
				while ($temp3 = mysql_fetch_assoc($query3))	{
					echo "<option value='".$temp3['client_id']."'";
					if ($temp3['client_id'] == $row2['client_id']) {echo " selected";}
					echo ">".$temp3['client_title']."</option>"; 
				}?> 							
            </select>
            </td>
        </tr>
        <tr height="40">
        	<th width="200" align="left" valign="middle"><? echo $order_arr[0]; ?>:</th>
            <td valign="middle"><input type="text" name="order_doc" value="<? echo $row2['order_doc']; ?>" style="width:100px;">&nbsp;&nbsp;&nbsp;<b><? echo $order_arr[1]; ?></b>:&nbsp;&nbsp;&nbsp;
            <input type="text" name="order_cost" value="<? echo $row2['order_cost']; ?>" style="width:184px;"></td>
      </td>
        </tr>
        <tr height="40">
        	<th width="200" align="left" valign="middle"><? echo $order_arr[6]; ?>:</th>
            <td valign="middle"><input type="text" name="side_id" style="width:100%;"></td>
        </tr>
        <tr height="40">
        	<th width="200" align="left" valign="middle"><? echo $order_arr[7]; ?>:</th>
            <td valign="middle"><textarea name="order_comment" cols="4" style="width:100%; font-family: Verdana; font-size:12px;"><? echo $row2['order_comment']; ?></textarea></td>
        </tr>
        <tr>
        	<td></td>
            <td><div align="right"><input type="submit" value="Сохранить"></div><br>
            <div class="div_mess"><? echo $_SESSION['mess']; ?></div></td>
        </tr>        	
        </form>
        
    </table>	
	</div><br>
ну вот страница для которой и писался валидатор который в первом посте темы..

ksa 05.10.2011 16:50

San4eZ, ты умеешь делать полные тестовые примеры? :) Или предоставляешь нам возможность побаловаться твоим "лего"?

И это не хтмл-разметка... Это фигня с ПХПшными вставками...

P.S.
Млин, ПХПисты как москвичи, думают что кроме ПХП ничего нет вообще...

San4eZ 05.10.2011 16:58

по хорошему то тут код то не нужен вообще, мне интересно сфигали такая лабуда идет со скриптами что они то работают то нет

nikita.mmf 05.10.2011 19:03

San4eZ,
скрипты либо работаю либо нет, третьего не дано, у браузера нет плохого и хорошего настроения, если идет лабуда значит где-то лажа.

San4eZ 06.10.2011 09:13

От спасибо то.... Тогда крайний вопрос: Почему скрипт отрабатывает один раз, проверку делает, а потом перестает?

GuardCat 06.10.2011 09:17

Возможно, проблема решится, если делать так:
function check_form(form4) {
    if (form4.month.value.length <1) {
        alert('Необходимо заполнить поле Месяц!');
        form4.month.focus();
        return false;
    } else if (form4.year.value.length <1) {
        alert('Необходимо заполнить поле Год!');
        form4.year.focus();
        return false;
    } else if (form4.client_title1.value.length <1 || form4.client_title2.selectedIndex == 0) {
        alert('Необходимо заполнить поле Наименование клиента!');
        form4.client_title1.focus();
        return false;
    } else if (form4.order_doc.value.length <1) {
        alert('Необходимо заполнить поле Документ!');
        form4.order_doc.focus();
        return false;
    } else if (form4.order_cost.value.length <1) {
        alert('Необходимо заполнить поле Цена!');
        form4.order_cost.focus();
        return false;
    } else {
        return true;
    }
}


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