Проблемы со скриптами (Ctrl+Enter)

iakobi91

Не работает вот такая штука:
function handleKeyPress(e) {
if (window.event) {
button = window.event.keyCode
} else {
button = e.which
}
if (button == 13)
{
document.getElementById('REPLIER').submit
}}
document.onkeypress = handleKeyPress

Вот что пишет консоль JavaScript в Opera:
Event thread: onkeypress
Error:
name: TypeError
message: Statement on line 100: Expression evaluated to null or undefined and is not convertible to Object: document.getElementById("REPLIER")
Backtrace:
Line 100 of inlinescript in http://www.site.ru/forum/index.php?act=Post&CODE=06&f=2&t=1751&p=26852
document.getElementById("REPLIER").submit;
At unknown location
{event handler trampoline}

Штука наподобие следующей также глючит:
<form action="bla.php" id="testform">
<input type="text" name="mymess" onkeypress="if(event.ctrlKey&&event.keyCode==10)||
(event.keyCode==13{document.getElementById('testform').submit}">
<input type="submit" value="отправить">
</form>
В чём дело?

Vladislav177Rus

У меня работает. Вывод: Опера ... (подставить нужное). Попробуй написать method = "get"

Luca1975

В ИЕ тоже самое

Vladislav177Rus

 <form action="bla.php" id="testform">
<input type="text" name="mymess" onkeypress="if(event.ctrlKey&&event.keyCode==10)||
(event.keyCode==13{document.getElementById('testform').submit}">
<input type="submit" value="отправить">
</form>
Работает. IE6

Vladislav177Rus

А в первом у тебя, наверно, просто нет формы REPLIER

iakobi91

А с textarea?
ИЕ6 пишет, что объект не поддерживает метод

Vladislav177Rus

Покажи код. У меня и в Опере (8) и в IE6 работает следующее:
 <form action="bla.php" id="testform">
<textarea name="mymess" onkeypress="if(event.ctrlKey&&event.keyCode==10)||
(event.keyCode==13{document.getElementById('testform').submit}"></textarea>
<input type="submit" value="отправить">
</form>

iakobi91

<form action='http://www.forum.ru/forum/index.php?' method='post' name='REPLIER' onsubmit='return ValidateForm' enctype='multipart/form-data'>
...
<textarea cols='80' rows='20' name='Post' tabindex='3' class='textinput' onkeypress="if(event.ctrlKey&&event.keyCode==10)||(event.keyCode==13{document.getElementById('REPLIER').submit}"></textarea>
...

Vladislav177Rus

Работает
 <?
echo isset($_POST['Post'])?$_POST['Post']:"ничего не прислано";
?>

<form action='bla.php' method='post' name='REPLIER' enctype='multipart/form-data'>

<textarea cols='80' rows='20' name='Post' tabindex='3' class='textinput' onkeypress="if(event.ctrlKey&&event.keyCode==10)||(event.keyCode==13{document.getElementById('REPLIER').submit}"></textarea>

</form>
Это тебя SerjK напряг?

iakobi91

Ну типа того. На самом деле я сам напрягся - интересно.
В чём фишка твоего кода?
Кроме
<?
echo isset($_POST['Post'])?$_POST['Post']:"ничего не прислано";
?>
никаких существенных отличий

Vladislav177Rus

Вот и я удивляюсь, почему у тебя не пашет. Ты имеешь мазу поставить RAdmin (прога, чтобы можно было удаленно на рабочий стол смотреть и использовать двойной ввод с клавы и мыши (из сети и локально (\\10.1.8.128\Soft\Net\Radmin тогда я смогу помочь, ближе столкнувшись с ситуацией.

iakobi91

Ладно, тогда забью на время. Большой thnx за focus.

iakobi91

Херург сделал такую фишку:
<textarea cols='70' rows='15' onKeyPress='if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13 this.form.submit.click' name='Post' tabindex='3' class='textinput'>$data</textarea>

Vladislav177Rus

А вот это у меня уже не работает

stat7300694

хм...

iakobi91

Ошибка здесь:
document.getElementById('REPLIER').submit}
Правильно будет так:
document.getElementById('REPLIER').submit.click}"></

Vladislav177Rus

Как раз нет. submit - это метод формы, отправляющий из нее данные на сервер, независимо от того, есть ли кнопка submit. А вот submit.click - это метод click (нажатие, которое может и не сопровождаться отправкой) элемента формы с именем submit - а если такого нет или это другой элемент, к желаемому результату это не приблизит.
[ВНИМАНИЕ, ПОНТЫ!] Не далее чем полгода назад я мог похвастаться сертификатом RetraTech по HTML и JavaScript, набравши свыше 90% правильных ответов, но их срок годности год, а мне лень перепроходить.

skvoria

Короче, у тебя форма прописана по name, а во всех браузерах кроме ИЕ getElementById работает тока для элементов с прописанным id.
Т.е. попробуй <form name="REPLIER" id="REPLIER"> или, что имхо правильнее, document.forms.REPLIER.submit
То же касается всех проверок элементов формы на корректность значения. Если не хочется дублировать name + id - ловить значение по document.forms.formName.elemntName.value.

iakobi91

Такую фишку document.forms.REPLIER.submit вроде пробовал - не выходит. Ругается именно на наличие скобок у submit. То есть на document.forms.REPLIER.submit не ругается, хотя и ничего не делает. А её можно засунуть куда-нибудь, чтобы Ctrl+Enter действовал ото всюду, например, в <form> или <body>?
Да, кнопка отправки есть.

skvoria

"Стоять на месте, на месте стоять,
Иначе рискуешь ничо не понять" (С)
Уточняю: в приведенном куске кода REPLIER - это name ФОРМЫ а не кнопки.
Если нужно сабмитнуть конкретной кнопкой - пишешь document.forms.submitName.click
Оставить комментарий
Имя или ник:
Комментарий: