Передача в функцию переменного количества аргументов
Подскажите, пожалуйста.
Количество аргументов, которые надо передать в функцию, изначально неизвестно. В php передаешь массив, и дело с концом. Как в js это сделать, ума не приложу. ПРИМЕР. Функция проверки полей формы на заполненность. Хочу передать в функцию поля, коорые проверять не нужно. В разных случаях количество этих полей разное. help:) |
Если я правильно понял то:
function myFunc(a, b, c, d) {
alert(arguments.length);
}
myFunc(1, 2, 3);
С помощью arguments.length узнаешь сколько аргументов ей было передано и выполняешь необходимые действия. |
Цитата:
function foo(obj)
{
alert((obj['width'])+' '+ (obj['height']));
}
var obj = new Object();
obj['width'] = 100;
obj['height'] = 120;
foo(obj);
|
Цитата:
http://javascript.ru/arguments |
ksa Букварь прочитан. Ответ не найден.
walik И сколько мне указывать аргументов в функции? Можно, конечно, с запасом написать 100 аргументов. Но криво это будет. Неправильно. kadabrik А как на странице я буду вызывать скрипт. К примеру, если я хочу исключить поля с названиями subject и text? Как потом аргументы обработать понятно. Вопрос, как передать туда аргументы...:blink: |
Цитата:
|
НУ перечту сейчас еще раз внимательнее...
ПРИНОШУ СВОИ ГЛУБОЧАЙШИЕ ИЗВИНЕНИЯ... С этим все ясно. Вообще в функции не ставлю ни одного аргумента, а передаю, сколько захочу. Попутный вопрос (уж извините новичка), чтобы не плодить темы. Функция проверяет поля формы на заполненность. Если поле не заполнено, alert выводит оповещение. Нажимаю ОК, в форме поля очищаются. Как этого избежать? |
Цитата:
|
Цитата:
|
<html>
<head>
<script language="JavaScript">
function check() {
field1 = document.getElementById( "field1" );
if (field1.value == '')
alert('Не заполнено поле field1');
}
</script>
</head>
<body>
<form name="form1" onsubmit="check(); return false;">
<input type="text" id="field1" /> <br />
<input type="text" id="field2" /> <br />
<input type="submit"/>
</form>
</body>
</html>
Вот появляется alert сообщение, поля не очищаются, в чем проблема ? |
Немного подкорректирую...
<html>
<head>
<script language="JavaScript">
function check() {
field1 = document.getElementById( "field1" );
if (field1.value == '') {
alert('Не заполнено поле field1');
return false;
}
return true;
}
</script>
</head>
<body>
<form name="form1" onsubmit="return check();">
<input type="text" id="field1" /> <br />
<input type="text" id="field2" /> <br />
<input type="submit"/>
</form>
</body>
</html>
Иначе и форму не отправить... :) |
Понятно, что есть в интернете куча решений. Но я просто хочу понять, что к чему. Потому сам изобретаю велосипед.
Вот здесь в чем ошибка, что поля очищаются?
function filled_form(current_form)
{
for(var counter=0;counter<current_form.length;counter++)
{
if(!current_form[counter].value)
{
alert('Заполните обязательные поля!..');
return;
}
}
}
Вызывается <form name="my_form" onsubmit="filled_form(my_form)"> |
Эдди,
у вас страница перезагружается, а не поля очищаются. |
Цитата:
Признаюсь честно. php моя стезя. javascript только по необходимости. Хотя понял, что необходимость эта стала возникать все чаще. |
<form name="my_form" onsubmit="*!*return*/!* filled_form(my_form)"> return добавьте перед именем функции.
alert('Заполните обязательные поля!..');
return *!*false*/!*;
И false когда возвращаете. |
[quote=walik;92597]
<form name="my_form" onsubmit="*!*return*/!* filled_form(my_form)"> Умирааааюююю... Идиотизм. Ну с вашими ретурнами вообще копец. Спасибо огроменное............:agree: Кстати, я сделал по-другому. Правильно? <form name="my_form" onsubmit="filled_form(my_form);return false"> |
Цитата:
http://javascript.ru/forum/dom-windo...html#post92587 |
[quote=Эдди;92598]
Цитата:
Не зависимо что вернет функция: true или false |
Спасибо всем большое. На phpclub с такими дебильными вопросами меня бы давно послали. Не говоря уже об обращениях на "Вы"...:)
Если позволите, тему позднее продолжу. Дальше будет проверка мейла и урла:) |
Цитата:
|
Цитата:
Так форма вообще никогда не отправится. |
Да. В моем случае форма не пойдет на сервер. Меняю на return функция.
|
Цитата:
|
Цитата:
http://ir2.ru/javascript10.aspx Попытаюсь поиском. Если нет, то уж не обессудьте, вас побеспокою. Спасибо. |
Окончательный вариант (без вас бы не справился):
function filled_form(current_form)
{
for(var i=0;i<current_form.length;i++)
{
for(var j=1;j<arguments.length;j++)
{
if(current_form[i].name!=arguments[j].name)
{
if(!current_form[i].value)
{
alert('Заполните все обязательные поля!..');
return false;
}
}
}
}
}
Вызов <form name="my_form" onsubmit="return filled_form(my_form,address), где со второго аргумента идут исключения (необязательные поля) Переходим к проверке мейла:) |
Цитата:
|
Цитата:
Только вот это, без регулярных выражений, не извращение?:-E
function check_mail(value)
{
valid_chars ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
valid_chars += "1234567890";
valid_chars += "-@_.";
str=document.form[0].email.value;
valid_string = true;
for(i=0; i < str.length; i++ )
{
current_valid_char = false;
for(j=0; j < valid_chars.length; j++)
{
if(str.charAt(i) == valid_chars.charAt(j))
{
current_valid_char = true;
}
}
if(current_valid_char == false)
{
valid_string = false;
}
}
return valid_string;
}
else
{
return false;
}
Лучше так или с рег? |
Цитата:
|
Цитата:
|
Цитата:
Это свежо? (твоя,между прочим) ^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\.)+[a-z]{2,6}$ |
Цитата:
|
Эдди, даже если будешь использовать
/[\s\S]+@([\s\S]+\.)+[\s\S]{2,6}$/
Это все равно будет лучше твоего скрипта. ;) Изучить оно конечно нужно обязательно, если собираешся этим заниматься. Но там книжка в 600 страниц про регулярные выражения. :D |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
function manyArgs() { for (var i = 0; i < arguments.length; ++i) alert(arguments[i]); } |
|
| Часовой пояс GMT +3, время: 03:30. |