Различное поведение атрибута onclick при отправке формы

Здравствуйте, я столкнулся со странным поведением атрибута onclick при отправке формы.

Страница на сервере:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head lang="en-us" >
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Return Form Example</title>
    <script type="text/javascript">
        function doSomething(){
            alert("hey");
            return false;
        }
    </script>
</head>

<body>
    <form action="submit.php" method="post">
        <input type="submit" onclick="return doSomething()" value="click me!">
    </form>
</body>
</html>

В этом примере, запущенном на моем сервере, когда я нажимаю кнопку отправки, я получаю предупреждение, что привет, и я остаюсь на текущей странице. Однако я попытался установить этот же пример на jsfiddle и получил ошибку 404, означающую, что форма была отправлена. Я не могу понять, почему это происходит.

Вот jsfiddle, в котором я пытаюсь воспроизвести поведение на моем сервере.

jsfiddle: http://jsfiddle.net/46XSv/


person anglinb    schedule 21.07.2013    source источник


Ответы (2)


Вы хотите отметить опцию «no wrap - in <head>», которая означает «Не обертывать код Javascript, помещать его в раздел».

Выберите «no wrap - in <head>» в разделе «Платформа и расширения».

На этой странице вы найдете описание каждой из опций внизу: http://doc.jsfiddle.net/basic/introduction.html.

Также рекомендуется включать точку с запятой в конце вашего оператора возврата, как показано ниже:

<input type="submit" onclick="return doSomething();" value="click me!">
person vee    schedule 21.07.2013
comment
Спасибо! Теперь это имеет гораздо больший смысл. - person anglinb; 22.07.2013

Вы должны использовать onsubmit в элементе <form> вместо onclick в элементе <input>. Будет работать правильно.

person Vojtěch    schedule 21.07.2013
comment
Спасибо. Это практически решит мою проблему, но мне интересно, почему мой код работает с моей настройкой, а не с jsfiddle. Ты хоть представляешь, почему это могло быть? - person anglinb; 22.07.2013
comment
Это зависит от реализации взаимодействия с пользователем, я полагаю, что он может вести себя по-разному не только в jsfiddle, но и в разных браузерах. - person Vojtěch; 22.07.2013