|
|
|
|
|
для: CNT
(22.06.2007 в 13:57)
| | Да, у вас всё правильно написано, вот ещё один бред:
В Firefox выделением можно управлять с помощью параметра default в теге --- никаких других эффектов, кроме чёрной рамки у этого параметра замечено не было. | |
|
|
|
|
|
|
|
для: Osipov
(22.06.2007 в 09:24)
| | Интересно...
1. В MSIE при нажатии клавиши ENTER визуально выделяется первая по коду кнопка <input type="submit">, но в потоке вывода никаких пар "имя_кнопки=надпись_на_кнопке" не передается.
а) Выделение первой по коду кнопки - никому не нужный бред.
б) А вот отсутствие данных о кнопке в потоке вывода абсолютно правильно - ведь кнопку-то не нажимали.
2. В FireFox при нажатии клавиши ENTER никакого визуального выделения не происходит, однако в потоке вывода появляется пара "имя_кнопки=надпись_на_кнопке" первой по коду кнопки <input type="submit">.
а) отсутствие выделения - правильно (ибо причём тут кнопка, когда курсор находится в текстовом поле).
б) передача первой по коду пары "имя_кнопки=надпись_на_кнопке" является бредом ибо фактически кнопку не нажимали - зачем нам передавать данные о существовании неработавшей кнопки?
3. В Opera ещё смешнее - при нажатии клавиши ENTER визуально выделяется ближайшая по коду к текстовому полю кнопка и она же передается в потоке вывода.
а) бред
б) бред
Выводы:
Первый - идеальных браузеров не бывает.
Второй - Opera является самым "смешным" браузером.
Третий - чтобы добиться кроссбраузерности, в форме не следует вообще использовать кнопки <input type="submit">, а следует заменить их кнопками <input type="button" value="уникальная_надпись">. Кроме того, в форму надо ввести скрытое поле <input type="hidden" name="why" value="enter">, а на каждую кнопку <input type="button" value="уникальная_надпись"> повесить обработчик onclick="with (this) {form.why.value = value; form.submit ()}"
Вот тогда:
а) ничего нигде сдуру визуально выделяться не будет;
б) в потоке вывода всегда будем иметь пару "why=что-то", и переданное "что-то" будет точно свидетельствовать - каким образом клиент просабмитил форму.
<form>
<input type="hidden" name="why" value="enter">
<input type="button" onclick="with (this) {form.why.value = value; form.submit ()}" value="btn1">
<input type="button" onclick="with (this) {form.why.value = value; form.submit ()}" value="btn2">
<input type="text" name="textfield">
<input type="button" onclick="with (this) {form.why.value = value; form.submit ()}" value="btn3">
<input type="button" onclick="with (this) {form.why.value = value; form.submit ()}" value="btn4">
</form>
|
| |
|
|
|
|
|
|
|
для: CNT
(22.06.2007 в 01:57)
| | В этой цитате ничего не сказано про несколько кнопок.
ОПС! прошу прощения! Для IE действительно нет никакого данного кнопок при нажатии Enter, а вот для Мозилы есть! То есть у мозилы передаются данные при нажатии Enter, как если бы была нажата первая кнопка, и нажатие Enter никак нельзя отлечить от нажатия первой кнопки: вот пример http://poetry.mooo.com/test.php
Ладно, так и быть, я пожертвовав дизайном сделаю главную кнопку первой, чтобы работало на всех браузерах, но вопрос остаётся открытым --- для Мозилы и других браузеров. | |
|
|
|
|
|
|
|
для: Osipov
(21.06.2007 в 23:50)
| | Хм... по-моему я понял вашу проблему.
В документации MSIE указано (цитирую): If the form includes only one text box and the user presses ENTER, the onsubmit event fires. If the form has an INPUT type=submit element, it will appear as a button with a dark border, which indicates the user can press ENTER to submit the form, что переводится приблизительно так: при наличии в форме только одного поля <input type="text">, VALUE которого может быть изменено юзером интерактивно (т.е. при помощи мыши и/или клавиатуры) нажатие клавиши ENTER приводит к сабмиту формы.
При этом для сабмита необходимо выполнение условия - это единственное текстовое поле формы должно в момент нажатия ENTER иметь фокус.
И при этом, если в форме имеется кнопка <input type="submit">, то эта кнопка в момент получения текстовым полем фокуса всего лишь обводится чёрной рамкой, что должно показать юзеру: "нажмешь ENTER - будет сабмит".
Т.е. фактически кнопка <input type="submit"> никоим образом не получает фокуса, она никоим образом не "псевдонажимается"... она всего лишь визуально выделяется.
Да, если кнопок <input type="submit"> в форме несколько, то визуально выделяется первая (по местонахождению в HTML-коде) из этих кнопок. Но опять же - только выделяется, и только визуально. Никакие программные действия при этом не происходят, программно отследить это выделение, отменить его, или перенести его на, например, вторую кнопку <input type="submit"> из нескольких имеющихся - нельзя.
Таким образом, ваша фраза - "работает первая кнопка" - неверна. Фактически при нажатии ENTER не работает ни одна из кнопок <input type="submit">, одна из них всего лишь "одевает траур". | |
|
|
|
|
|
|
|
для: CNT
(21.06.2007 в 23:23)
| | Проверил практически только что и много раз использовал в своих страницах --- для IE и Мозилы это не так --- остаётся только поле для нажатой клавиши.
И вообще, довольно часто на разных сайтах встречается несколько кнопок в форме, пожтому я подозреваю то что это соответствует стандарту HTML.
В любом случае, меня интересует не это, а как сделать, чтобы пользователь отправлял определённой кнопкой при нажатии на Enter в пределах формы --- до сих пор получается, что работает первая кнопка в форме. | |
|
|
|
|
|
|
|
для: Osipov
(21.06.2007 в 22:58)
| | Если у каждой кнопки имеется атрибут NAME, то в потоке вывода будет столько пар name=value, сколько кнопок с разными именами у вас будет прописано в форме. М.б. есть смысл атрибут NAME для каждой кнопки, наоборот, не прописывать, а кнопкам назначить обработку события ONCLICK = "this.name = 'уникальное_имя_кнопки';"> - тогда в потоке вывода будет всего одна пара name=value, имеющее первым элементом пары уникальное_имя_кнопки, которую юзер нажал. | |
|
|
|
|
|
|
|
для: CNT
(21.06.2007 в 22:55)
| | У данных будет дополнительный параметр, ключ которого --- параметр name нажатой кнопки, а значение --- её value. Поэтому по данным можно определить, какая именно кнопка была нажата для отправки (если у них разные параметры name) | |
|
|
|
|
|
|
|
для: Osipov
(21.06.2007 в 22:47)
| | Подумайте и попробуйте ещё раз сформулировать свой вопрос - что вам реально надо получить при сабмите формы.
Если у вас внутри формы будет тысяча и одна кнопка <input type="submit">, при нажатии на любую из них данные формы отправятся по одному и тому же адресу - который в единственном числе указан в атрибуте ACTION тега <form> | |
|
|
|
|
|
|
| У меня в форме несколько кнопок <input type=submit>. Мне нужно сделать, чтобы при нажатии на Enter внутри формы, она отправлялось по конкретной кнопке. | |
|
|
|
|