Я пытаюсь отправить форму, нажав Enter, но не отображая кнопку отправки. Я не хочу входить в JavaScript, если это возможно, поскольку я хочу, чтобы все работало во всех браузерах (единственный известный мне способ JS - это события).
Прямо сейчас форма выглядит так:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
Который работает довольно хорошо. Кнопка отправки работает, когда пользователь нажимает ввод, и кнопка не отображается в Firefox, IE, Safari, Opera и Chrome. Тем не менее, мне все еще не нравится это решение, поскольку трудно понять, будет ли оно работать на всех платформах со всеми браузерами.
Кто-нибудь может предложить лучший метод? Или это так хорошо, как это получается?
Ответы:
Пытаться:
Это будет нажимать кнопку влево, вне экрана. Хорошая вещь с этим, вы получили бы постепенное ухудшение, когда CSS отключен.
Обновление - Обходной путь для IE7
В соответствии с предложением Брайана Даунинга +
tabindex
для предотвращения доступа к этой кнопке (от Ates Goral):источник
position: absolute; width: 1px; height: 1px; left: -9999px;
tabindex="-1"
Я думаю, вы должны пойти по пути Javascript, или, по крайней мере, я бы:
источник
keydown
из-keypress
за более широкой поддержки, но вы также должны добавитьe.preventDefault();
перед,if
если вы хотите поддерживать Chrome..on('keypress'...)
вместо этого. Документы.on()
выглядят так, как будто они вас.preventDefault()
зовут.Вы пробовали это?
Так как большинство браузеров понимают,
visibility:hidden
и это на самом деле не работаетdisplay:none
, я думаю, что все должно быть хорошо. Сам не проверял, так что CMIIW.источник
visibility: hidden
: как вы можете прочитать в w3schools , наглядность: ничего не влияет на макет. Если вы хотите избежать этого пробела, мне кажется, что решение с абсолютным позиционированием лучше для меня.<input type="submit" style="visibility: hidden; position: absolute;" />
position: absolute; left: -100px; width: 1px; height: 1px;
Другое решение без кнопки отправки:
HTML
JQuery
источник
Для тех, кто ищет этот ответ в будущем, HTML5 реализует новый атрибут для элементов формы
hidden
, который будет автоматически применятьсяdisplay:none
к вашему элементу.например
источник
Используйте следующий код, это решило мою проблему во всех 3 браузерах (FF, IE и Chrome):
Добавьте строку выше в качестве первой строки в вашем коде с соответствующим значением имени и значения.
источник
Вместо хака, который вы сейчас используете, чтобы скрыть кнопку, было бы намного проще установить
visibility: collapse;
атрибут стиля. Тем не менее, я бы по-прежнему рекомендовал использовать немного простого Javascript для отправки формы. Насколько я понимаю, поддержка таких вещей сегодня повсеместна.источник
Просто установите для скрытого атрибута значение true:
источник
Самый элегантный способ сделать это - сохранить кнопку submit, но установить для нее border, padding и font-size значение 0.
Это сделает размеры кнопки 0x0.
Вы можете попробовать это сами, и, установив контур элемента, вы увидите точку, которая является внешней границей, «окружающей» элемент пикселя 0x0.
Нет необходимости в видимости: скрытый, но если он заставляет вас спать по ночам, вы можете добавить это и в микс.
JS Fiddle
источник
IE не позволяет нажимать клавишу ВВОДА для отправки формы, если кнопка отправки не видна, а форма имеет более одного поля. Дайте ему то, что он хочет, предоставив прозрачное изображение 1x1 пикселей в качестве кнопки отправки. Конечно, это займет пиксель макета, но посмотрите, что вы должны сделать, чтобы скрыть его.
источник
Это мое решение, протестированное в Chrome, Firefox 6 и IE7 +:
источник
Это прекрасно работает, и это самая явная версия того, что вы пытаетесь достичь.
Обратите внимание, что есть разница между
display:none
иvisibility:hidden
для других элементов формы.источник
HTML5 решение
источник
самый простой способ
источник
Для тех, у кого проблемы с IE и для других тоже.
источник
float: left;
, когда удаляется, он представляет.Вы также можете попробовать это
Вы можете включить изображение с шириной / высотой = 0 пикселей
источник
Я работаю с кучей фреймворков UI. У многих из них есть встроенный класс, который вы можете использовать для визуального скрытия вещей.
начальная загрузка
Угловой материал
Блестящие умы, создавшие эти рамки, определили эти стили следующим образом:
источник
Я добавил его в функцию готового документа. Если в форме нет кнопки отправки (все мои диалоговые формы Jquery не имеют кнопок отправки), добавьте ее.
источник
источник
Я использовал:
и:
в файле .css. У меня это тоже получалось волшебно. :)
источник