2013-07-21 2 views
1

Здравствуйте, я натолкнулся на странное поведение с атрибутом 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/

ответ

2

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

Выберите «no wrap - in <head>» под «Framework и расширений»

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

Кроме того, его хорошая практика, чтобы включать точку с запятой в конце вашего возвращения заявления, как следующее:

<input type="submit" onclick="return doSomething();" value="click me!"> 
+0

Спасибо! Теперь это имеет гораздо больший смысл. – anglinb

1

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

+1

Ok спасибо. Это практически решит мою проблему, но мне интересно, почему мой код работает на моей настройке, а не на jsfiddle. Вы не знаете, почему это может быть? – anglinb

+0

Это зависит от реализации взаимодействия с пользователем, я полагаю, что он может вести себя по-разному не только на jsfiddle, но и на разных браузерах. –

Смежные вопросы