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


Автор: MoZy 28.4.2008, 20:24
Код

<form name="Registration" method="post" action="index.php">
    <input name="Name" type="text">
</form>
<a style="cursor:pointer;color:#FFFFFF"  onClick="Registration.submit();">Отправить</a>

Пробую в форме нажать Enter  - он бимкает и все.
Че делать? :smile

Автор: SelenIT 28.4.2008, 20:37
А кто заставлял делать такую антигуманную вещь? Не у всех юзеров мышка и скрипты под рукой.

Учите CSS, там достаточно средств, чтобы сделать <input type="submit"> или <button type="submit"> визуально неотличимым от ссылки, но без издержек. Костыли типа window.onload=function(){ссылка.focus()} не буду советовать из принципа smile

Автор: MoZy 28.4.2008, 21:06
Ой. А вы бы не могли самы малый пример. Хотя б что б фона у кнопки не было? =)

Автор: SelenIT 28.4.2008, 21:38
Вот так пойдет?
Код

<style>
button { background:transparent; border:none; padding:0; color: #00a; font: normal 1em serif; text-decoration:underline; cursor:pointer; }
</style>
<button type="submit">a la link</button>

Автор: MoZy 29.4.2008, 13:31
=) Я про такие кнопки даже и не знал... Спасибо!

Автор: MoZy 29.4.2008, 14:19
Прикольно! =) теперь Enter работает, но чет теперь не могу обработать Submit

Если я сию кнопку делаю submit, то робит Enter, и включается отправка. Отправка обрабатывается, но я не могу ее прервать в случае неверных данных. Если же button, то обрабатывается нормально (естесственно), но ентер не робит.

Я заметил такое и в форме поиска Vingrad'а. Жму ентер, а он мне - бип. Приходится давить на ссылку. Как быть??
Уж не хочется повторный редирект на страницу регистрации...

Код


<form name="Registration" method="post" onSubmit="Registrate();" action="index.php" style="padding:0;margin:0">
...
//<button type="button" onClick="Registrate();">Отправить</button>
<button>type="submit" Отправить</button>

<script>
function Registrate()
{
if(Registration.login.value==""  || Registration.email.value==""){alert("Все поля должны быть заполнены (достоверно)");return 0;}
if(Registration.passw.value!=Registration.passw2.value){alert("Пароли не совпали");return 0;}
//Registration.submit();
}
</script>    

Автор: ksnk 29.4.2008, 14:21
Символ > в button'е пропущен... Это такая опечатка при cut&paste?

Добавлено через 58 секунд
Заключительной </form> тоже не видать... Так и должно быть?

Автор: SelenIT 29.4.2008, 14:47
1) onsubmit="return Registrate();" (для отмены события return false должно быть в самом обработчике)
2) в примере опечатка, атрибут type вылетел из тега button в его содержимое (в IE это эквивалентно type="button").

Автор: MoZy 29.4.2008, 20:28
Круто! Робит! Всего-то надо было ретурнить не ноль, а false!
Сбасибо, SelenIT, большое =)

Автор: pp2amd6 9.2.2010, 13:30
Та же ситуация, что и у MoZy, но в отличие от него у меня не работает.

Код

<form method="post" action="process.php?mode=order_add" name="order_add" onSubmit="check_form();">
...
<input type="submit" value="Добавить">
...
</form>


Код

function check_form()
                {
                    var car=document.getElementById("car").value;
                    var car_vcm3=document.getElementById("car_vcm3").value;
                    var car_dop=document.getElementById("car_dop").value;
                    var order_contacts=document.getElementById("order_contacts").value;
                    if (car=="" || car_vcm3=="" || car_dop=="" || order_contacts=="")
                    {
                        alert("Не все поля заполнены!");
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }


При нажатии на кнопку срабатывает alert, но отправка данных всё равно происходит. Что упустил?

Автор: 12345c 9.2.2010, 14:35
MoZy (сообщение в прошлое, для будущего), onClick="Registration.submit();" не везде будет работать. Пишите document.forms['Registration'] или document.getElementsByName['Registration'][0].


pp2amd6, onSubmit="return check_form();" будет работать.

Автор: pp2amd6 10.2.2010, 20:47
12345c, спасибо. Снова мелочь не доглядел

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