Скрытая кнопка отправки не будет отправлена ​​в Chrome при нажатии Enter - PullRequest
1 голос
/ 13 апреля 2011

У меня проблема со скрытой кнопкой отправки. У меня есть поле ввода, которое я использую для чата Ajax (jQuery), люди должны ввести текст и нажать Enter, чтобы отправить сообщение. Это отлично работает в Firefox, но не в chrome, я думаю, что он обрабатывает его так, как будто его там нет.

Я использую следующий код:

$('#CommentChatForm').submit(function(event){ 
    ...
}

И я использую это, чтобы скрыть кнопку отправки:

$('#CommentChatForm input:submit').hide();

Что делает HTML похожим на это:

<div class="submit">
    <input type="submit" value="Submit" style="display: none;">
</div>

Я также пытался использовать keypress (), добавив сверху:

$('#CommentMessage').keypress(function(e){
    if(e.which == 13){
        $('#CommentChatForm').submit();
    }
})

Это делает его работоспособным в Chrome, но в Firefox - дважды, а не один раз.

Ответы [ 5 ]

8 голосов
/ 30 мая 2012

Иногда вы не можете контролировать HTML, создаваемый каким-либо виджетом или модулем, поэтому вы стилизуете вещи с помощью CSS. Так было и со мной. Если обнаружил, что в Chrome он работает, если вы используете

visibility:hidden;

но не если вы используете

display:none;

В FireFox это работает в любом случае. Надеюсь, это кому-нибудь пригодится.

4 голосов
/ 13 апреля 2011

Если вы используете обработчик нажатия клавиш, вам не понадобится скрытая кнопка отправки, поэтому просто удалите ее.

0 голосов
/ 14 августа 2012

Я делаю так и без кнопки «Отправить».

0 голосов
/ 13 апреля 2011

Если вы не хотите отображать его, не добавляйте его в html.

html:

<form id="form" onsubmit="my_submit()">
<input type="text" id="msg" />
</form>

javascript:

function my_submit(){
    var msg = $('#msg').val();
    ....
    submit_on_my_own(msg);
    ...
    return false;
}
0 голосов
/ 13 апреля 2011

работает для меня в Chrome

http://jsfiddle.net/qEAeN/

может потребоваться дважды проверить ваш JS

...