Я встречал такие странности с элементами директивы и таблицы. См. Этот выпуск , например. Попробуйте обернуть ваш шаблон тегом div
или используйте replace:false
.
Я установил для формы значение onsubmit = "return false" и сделал это
<input type="button" value="Submit" onClick="document.Survey.submit()" style="font-size: 1.25em;">
Я рекомендую использовать обработчик onsubmit, который предотвращает отправку формы (возвращает false), а затем использовать javascript для отправки формы при нажатии кнопки.
<form action="accion.htm" onsubmit="return false;">
<input type="text" name="pepe" />
<a onclick="this.parentNode.submit();" href="javascript:;">submit</a>
</form>
Обратите внимание, что это просто Например, обработчики событий не следует добавлять в строку, а this.parentNode.Submit () работает только в том случае, если
является прямым дочерним элементом формы.
если в форме есть один ввод типа текста, и пользователь нажимает "Enter" на этом вводе, форма будет отправлена в соответствии со спецификацией HTML 4. Самый простой способ предотвратить это - добавить еще один скрытый текстовый ввод
Зачем это нужно?
Отправка формы нажатием ввод - стандартное ожидаемое поведение веб-формы.
Если вы пытаетесь убедиться, что они не случайно отправят форму до того, как они заполнили или выбрали все параметры, используйте проверку Функция javascript, которая проверяет наличие записей во всех полях формы. (добавьте параметр onsubmit = 'myValidateForm ();' в тег формы)
Если все необходимые данные заполнены, не должно быть проблем с разрешением отправки формы с помощью введите как также нажав кнопку.
$('input').keydown(function(e){
return e.keyCode !== 13;
});
... I don't recommend doing this, by the way.
Я философски согласен с плакатами, которые говорят: «Почему вы хотите это сделать?» Но у меня также есть кто-то, кто спрашивает меня об этом поведении, так что я в той же лодке, что и вы.
Я использовал решение Thirster42 раньше, но оно работает для меня только когда это GET, а не POST. Это также, похоже, зависит от браузера - Firefox не отправляет форму, когда пользователь нажимает ввод в текстовое поле, но Safari отправит. (Firefox 3.5.3, Safari 4.0.3, MacOSX)
Большая часть того, что я видел в Интернете, выглядит так это : «В: Как мне это сделать? A: В основном, вы не надо ". Я считаю, что это связано с тем, что поведение несовместимо между платформами и веб-браузерами, а то, что работает для Firefox, может не работать для IE или Opera. Кроме того, вы не можете полагаться на javascript, если пользователь отключил его в браузере.
Все, что было сказано, вот то, что я сделал, кажется, работает, заимствовано из здесь и других различных мест. Проверено в Firefox, Safari и IE 8. JavaScript для заголовка:
function disableEnterKey(e)
{
var key;
if(window.event)
key = window.event.keyCode; // IE
else
key = e.which; // Firefox
if(key == 13)
return false;
else
return true;
}
И затем в каждом поле ввода:
:onKeyDown "return disableEnterKey(event);"
Мне это не очень нравится, но если это делает людей счастливыми ...