Вход

Просмотр полной версии : Проверка на заполнение текстового поля


Гробовщик
06.06.2013, 10:57
Здравствуйте, давно сижу с одним простеньким, наверное, скриптом. js знаю только поверхностно, начинаю только учить так сказать...
Так вот скрипт у меня такой: Есть формочка с текстовыми полями которые необходимо будет проверить на заполнение, имена полей заранее не известны, известно что именуются они как kol[$i] (из php).
Все эти значения я положил в массив $arr, после чего этот массив я отдал в JS в массив "array" И вот когда я начинаю делать проверку скрипт не отрабатывается. Вот код:

echo '<form action="proverka.php" method="post" name="form" autocomplete="off" onsubmit="return validate_form ( );">';
echo "<p> Выберите объект:
<select name=s_object size=1>"; //Выбор объектов
//Здесь идёт код combobx, он работает)
echo '</select></p>';

Далее я вывожу значения из базы (id-шники) и потом складываю их в массив добавляя приставку "kol"

$arr[] = "kol".$i."";

Сами текстовые поля выглядят так
<div style='width:48%;float:right;'>
<p class='ta4'><input type='text' name=kol".$i.">&nbsp;".$mat['ed_izm']."</p>
</div>";

Кнопочка далее

echo "<div style='width:48%;float:right;'>
<p><input type='submit' value='Далее->' name='button'>
</div>";
Тут я предаю свой массив из php в JS
unset($tmp);
foreach ($arr as $dta) {
$tmp[]='\''.$dta.'\'';
}
echo '<script type="text/javascript">
var array=new Array('.implode(',',$tmp).');
</script>';

И конечно скрипт проверки


<!-- //Это защита скрипта от старых браузеров (мало ли)

//for (i in array) {
// document.write(i);
// document.write(array[i]); Так я проверил что массив существует, и да он существует
// document.write('<br>');
//}


function validate_form ( ) ///Сама функция
{
valid = true; //Я возвращаю не false а valid, какая разница=)

if ( document.form.s_object.value == "0" )
{
alert ( "Пожалуйста выберите строящийся объект" ); //Проверка значения в combobox, она как раз работает
valid = false;
}

// И вот он проблемный код который не работает, будь он не ладен

for (i in array){ //Разбираем массив (i увиличеваем)

if (document.form.array[i].value =='') // если поставить здесь строку if (document.form.kol33.value =='') то она бл*дь работает, но я не знаю значения заранее, мне надо так =(

{
alert('Введены количества не для всех обьектов');
valid = false;
}
}
return valid;
}
//-->
</form>
</body>
</html> //ну а это я написал что бы вы были в курсе в каких тегах вся это радость происходит

mta88
06.06.2013, 11:41
ну это как-то несеръезно

вместо document.form.array[i].value наверно имелось в виду document.form[array[i]].value

-------------------------------------
P.S.
тем более где вы взяли "document.form"? у меня такого нет
зато есть "document.forms"
document.forms[0][array[i]].value

Гробовщик
06.06.2013, 11:50
mta88,
Я говорю новичок в JS, но жизнь заставила разбираться... Скрипт вообще забил, и переходит на другую страницу ничего не спрашивая
Сделал так

function validate_form ( )
{
valid = true;

if ( document.form.s_object.value == "0" )
{
alert ( "Пожалуйста выберите строящийся объект" );
valid = false;

}


for (i in array){

if (document.form.[array[1]].value =='')
{
alert('Введены количества не для всех обьектов');
valid = false;
}
}

return valid;
}

Гробовщик
06.06.2013, 12:00
mta88,
Я всё понял, спасибо тебе, ты мне наверное небесами послан, я об этот скрипт чуть мозг себе не сломал.

keen
12.06.2013, 14:23
пассаж о небесах особенно трогателен из уст юзернейма "гробовщик".

danik.js
12.06.2013, 14:36
Юзай HTML5 валидацию плюс polyfill

Гробовщик
14.06.2013, 09:09
danik.js,
А чё он так может?

Solonik
14.06.2013, 13:15
Не совсем понятно вообще как это будет работать. Ты проверяешь значение равно нулю или нет ?Или нужно чтобы длинна строки была не равна нулю ?
Если длина то нужно использовать .length == 0
Форма одна странице ? Если да к ней можно обращаться как document.forms[0];

danik.js
14.06.2013, 13:34
Тут я предаю свой массив из php в JS

Это делается проще:
var array = <?=json_encode($arr)?>;