Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.09.2010, 14:43
Интересующийся
Отправить личное сообщение для chelsea Посмотреть профиль Найти все сообщения от chelsea
 
Регистрация: 11.03.2010
Сообщений: 12

onsubmit отправка формы
Всем привет.
Такой вопрос:
Форма
<form method="post" onsubmit="if(document.getElementById('cb').value==''){alert('!!!'); return false;}">
  <input id="cb" type="checkbox" />
  <input type="submit" value="отправить" />
</form>

При нажатии submit отрабатывает условие в событии onsubmit, но после того как закрываю алерт-окошко данные формы все равно отправляются. Как сделать чтоб не отправлялись?
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2010, 15:02
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Есть такой вариант:

<input type="button" value="Отправить" onclick="if ( … ) myform.submit(); else alert('!!!');" />
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2010, 02:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,059

chelsea,
заменить if(document.getElementById('cb').value=='') на if(!document.getElementById('cb').checked) так как value = 'on' у checkbox

Последний раз редактировалось рони, 24.09.2010 в 02:58.
Ответить с цитированием
  #4 (permalink)  
Старый 13.01.2011, 10:53
Новичок на форуме
Отправить личное сообщение для Delovoy Посмотреть профиль Найти все сообщения от Delovoy
 
Регистрация: 13.01.2011
Сообщений: 9

похожий вопрос, поэтому решил написать в эту тему:
форма:
<form name="UserEnter"  action="index.php" method="POST" onsubmit="CheckFields()">

            Укажите e-mail: <input type="text" name="login" id ="login" value="" size="30" />
            <?php
            /*if ($userIsEmpty)
                echo (" Укажите свой e-mail");*/
            if (!$userIsValid)
                echo (" Такой пользователь отсутствует. Пройдите процедуру регистрации!");
            ?>

            <br/>
            Укажите пароль:<input type="password" name="password" id ="password" value="" size="10" />
            <?php
            /*if ($passwordIsEmpty)
                echo (" Укажите свой пароль");*/
            if (!$passwordIsValid)
                echo (" Пароль не верный!");
            ?>
             <br/>
            <input type="submit" value="Вход" />
        </form>


Сама функция валидации:
function CheckFields()
{
    var checklogin = false;
    var checkpassword = false;

    // получение элемента login
    ValueLogin = document.getElementById('login');

    // проверка того, что элемент login заполнен
    if (ValueLogin.value !='' && ValueLogin != undefined){
        checklogin = true;
        // получение элемента password
        ValuePassword = document.getElementById('password');

        // проверка того, что элемент password заполнен
        if (ValuePassword.value !='' && ValuePassword != undefined){
            checkpassword = true;
            
            // submit должен выполняться только в случае заполнения всех полей 
            document.forms["UserEnter"].submit();
        }
            
        else alert('Укажите пароль!');
    }
    else alert('Укажите свой e-mail!');

}


При нажатии submit отрабатывает условие в событии onsubmit, но после того как закрываю алерт-окошко данные формы все равно отправляются. Как сделать чтоб не отправлялись?
Ответить с цитированием
  #5 (permalink)  
Старый 13.01.2011, 11:07
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Delovoy, return false установите по умолчанию

forma.onsubmit = function(){
      if(1<2) return true; //проверяем условие, если все верно, то отправляем, если нет - нет.
      return false;
};

Последний раз редактировалось monolithed, 13.01.2011 в 11:10.
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2011, 11:45
Новичок на форуме
Отправить личное сообщение для Delovoy Посмотреть профиль Найти все сообщения от Delovoy
 
Регистрация: 13.01.2011
Сообщений: 9

Спасибо, monolithed!

модифицировал функцию следующим образом:
function CheckFields()
{
    var checkpassword = false;

    // получение элемента login
    ValueLogin = document.getElementById('login');

    // проверка того, что элемент login заполнен
    if (ValueLogin.value !='' && ValueLogin != undefined){
      
        // получение элемента password
        ValuePassword = document.getElementById('password');

        // проверка того, что элемент password заполнен
        if (ValuePassword.value !='' && ValuePassword != undefined){
            checkpassword = true;
        }
            
        else alert('Укажите пароль!');
    }
    else alert('Укажите свой e-mail!');

    // submit должен выполняться только в случае заполнения всех полей
    
    if (checkpassword) return true;
    else return false;
}

но результат тот же ! submit формы происходит все равно.
хотя я проверил - функция возвращает false

может это связано с тем, что подключение скрипта выполнено из внешнего файла, посредством
<script type="text/javascript" src="newjavascript.js"></script> ?
а не непосредственно в коде, как в вашем примере ?
Ответить с цитированием
  #7 (permalink)  
Старый 13.01.2011, 15:33
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Delovoy
может это связано с тем, что подключение скрипта выполнено из внешнего файла, посредством
<script type="text/javascript" src="newjavascript.js"></script> ?
а не непосредственно в коде, как в вашем примере ?
это никак не связано, если конечно вы файл не забыли подключит...

<script type="text/javascript">
window.onload = function(){
    document.forms[0].onsubmit = function(){
        if(this.elements[0].value == 4) return true;
        return false;
    };
};
</script>

<form action="" method="post">
    <input type="text" />
    <input type="submit" value="ok" /> 2+2 = ?
</form>
Ответить с цитированием
  #8 (permalink)  
Старый 13.01.2011, 18:08
Новичок на форуме
Отправить личное сообщение для Delovoy Посмотреть профиль Найти все сообщения от Delovoy
 
Регистрация: 13.01.2011
Сообщений: 9

файл подключен, я проверил

модифицировал форму следующим образом
<form name="UserEnter"  action="index.php" method="POST" >
              ........................
             <input type="submit" value="Вход" onclick="CheckFields()" />
</form>


и скрипт
function CheckFields()
{
    var checkpassword = false;
    ................ // тут идет набор проверок
   
    document.forms[0].onsubmit = function(){

        if (checkpassword) return true;
        else {
            alert ('FALSE');
            return false;
        }
    }
}


alert добавил, чтобы проконтролировать по какой ветке пойдет выполнение.
Выполнение идет по правильной ветке, появляется сообщение "FALSE" в отдельном окне
после закрытия которого, происходит перезагрузка страницы (submit) ...

может этот способ не подходит для Opera 11 ?
Ответить с цитированием
  #9 (permalink)  
Старый 13.01.2011, 19:35
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

у меня opera 11 и пример monilithed работает как надо. Если хочешь, чтобы тебе помогли, сделай так, чтобы твой код можно было запустить прямо на форуме (js run)
Ответить с цитированием
  #10 (permalink)  
Старый 14.01.2011, 10:40
Новичок на форуме
Отправить личное сообщение для Delovoy Посмотреть профиль Найти все сообщения от Delovoy
 
Регистрация: 13.01.2011
Сообщений: 9

Спасибо, всем кто участвовал! Разобрался как сделать

модифицировал форму следующим образом

<form name="UserEnter" id="UserEnter" action="index.php" method="POST" >
              ........................ 
             <input type="button" value="Вход" onclick="CheckFields()" /> 
</form>


т.е. изменил тип кнопки с submit на button - чтобы убрать автоматический submit формы при нажатии

сама функция:

function CheckFields()
{
    var checkpassword = false;
    ................ // тут идет набор проверок
   
   if (checkpassword) {
    document.getElementById("UserEnter").submit(); 
    }
}


В функции, если условие проверки выполняется - выполняю submit формы
document.getElementById("UserEnter").submit();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка формы с action="" onsubmit="foo()" Elerium Элементы интерфейса 1 20.07.2010 15:57
Проверка и отправка данных из формы Катерина Общие вопросы Javascript 2 25.03.2010 16:56
Автоматическая отправка формы через JavaScript без использования body onload pavluxa09 Общие вопросы Javascript 0 17.11.2009 15:55
Отправка текущих переменных формы в ссылке user1980 Общие вопросы Javascript 2 26.10.2009 17:28
У элемента img внутри form пропадает событие после onsubmit формы Eugene Events/DOM/Window 2 18.06.2009 19:21