Jump to content
  • 0

Проблемы с submit с помощью JS


edycle
 Share

Question

Здравствуйте!

Весь день мучаюсь над проблемой, решения которой не могу найти. Дело в том, что у меня есть элементарная форма отправки сообщения:

<form action='send_mes.php' target="_self" method="post" onkeypress="submitOnCtrlEnter()" >
<textarea name="text" id="new_msg_textarea"></textarea>

<button type='submit' name='reply_mes' id="new_msg_button"><?php echo $but_text;?></button>
</form>

При клике на Submit она благополучно открывает файл send_mes.php и передает данные.

Проблемы возникают, когда я добавляю JS с возможностью отправки сообщения, используя комбинацию клавиш Ctrl + Enter (Cmd + Enter). При клике на Submit, все продолжает замечательно работать, но при нажатии Crtl+Enter (Cmd+Enter) не нравится следующее:

1. Файл send_mes.php открывается в другой вкладке, хоть и задан атрибут target. Что нужно сделать, чтобы этот файл открывался в той же вкладке?

2. Комбинация клавиш не работает в браузере Firefox. Подскажите, как данную коминацию сделать кроссбраузерной, не забыв при этом про Mac OS X?

Javascript, который я использую:

<script type="text/javascript">

function submitOnCtrlEnter() {
if (event.keyCode == 13 && (event.ctrlKey || event.metaKey)) {
document.getElementById("new_msg_button").click();
}
}


</script>

Большое спасибо!)

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Попробуй традиционные:

<script type="text/javascript">

function submitOnCtrlEnter(evt) {
event = window.event || evt;
if (event.keyCode == 13 && (event.ctrlKey || event.metaKey)) {
document.getElementById("new_msg_button").click();
}
}

</script>

А как решить проблему с новой вкладкой? Откуда она вообще берется? Явно ведь задан target

Попробуй традиционные:

<script type="text/javascript">

function submitOnCtrlEnter(evt) {
event = window.event || evt;
if (event.keyCode == 13 && (event.ctrlKey || event.metaKey)) {
document.getElementById("new_msg_button").click();
}
}

</script>

Спасибо! В Firefox заработало и даже открывает в текущей вкладке))

А вот в Opera упорно продолжает открывать новую

Link to comment
Share on other sites

  • 0

Попробуй традиционные:

<script type="text/javascript">

function submitOnCtrlEnter(evt) {
event = window.event || evt;
if (event.keyCode == 13 && (event.ctrlKey || event.metaKey)) {
document.getElementById("new_msg_button").click();
}
}

</script>

Оказалось, что JS в данном случае работает только с пустой textarea((( Если ее заполнить и нажать Ctr+Enter, то ничего не происходит

Link to comment
Share on other sites

  • 0

А в чём смысл сабмитить форму симулируя клик на кнопке сабмит??

Не проще ли воспользоваться родным для формы методом form.submit()??

И, кстати, у формы target="_self" можно убрать - он по дефолту такой..

Попробуй поменять keypress на keydown..

Edited by DrStrangeLove
Link to comment
Share on other sites

  • 0
Если ее заполнить и нажать Ctr+Enter...

Всегда или только когда курсор в этой textarea стоит? Имхо, если второе, то просто textarea "захватывает" энтер как обычный вводимый символ. Может, на textarea onkeypress продублировать?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy