Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 54

Кнопка отправки формы появляющаяся при нажатии на объект

26.10.2011, 11:32. Показов 3774. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть такая простая задачка, но которую я не могу решить, т.к. новичок. Проблема описана в заголовке. Для большего понимания скажу, что форма ввода сообщения должно выглядеть как добавление комментариев на сайте Вконтакте или в Twitter, т.е. кнопка появляется при нажатии на текстовую область. Вообщем, думаю, схема понятна. Буду очень благодарен, если кто-нибудь мне поможет.

Добавлено через 17 часов 27 минут
Понимаю, это делается банально используя события onFocus и onBlur, но хотелось бы увидеть скрипт.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2011, 11:32
Ответы с готовыми решениями:

Появляющаяся кнопка вне формы при наведении курсора
Пытаюсь реализовать что-то вроде гаджета для windows 7 на C# При наведении курсора на форму, сбоку появляется крестик закрытия программы....

TButtonedEdit: кнопка, появляющаяся только при наведении мыши
Добрый день! Кто нибудь, знает как у TbuttonEdit сделать, что бы при наведении на кнопку - там появлялась изображение (крестик) как в...

При нажатии в любую часть формы кнопка должна появится на этом месте
Вообщем такие две задачки (очень легкие, но так как я ную еще в этом дела, то помогите пожалуйста) в общем : 1) при нажатии в любую...

11
front-end developer
 Аватар для Vicont
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
26.10.2011, 12:08
HTML5
1
2
<textarea onfocus="document.getElementById('subbut').style.display = 'inline'" onblur="document.getElementById('subbut').style.display = 'none'">Здесь текст комментария</textarea>
<input type="submit" value="Добавить" id="subbut" style="display: none"/>
1
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
26.10.2011, 12:14
Вот пример. Кнопка отправить появляется только тогда, когда в текстовом поле есть хотя бы один символ. Попробуйте набрать текст, а затем стереть его.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html><head><title>Пример: работаем с кнопкой submit</title></head>
<body>
<form name="commentsForm" id="commentsForm" action="myPhp.php">
    <label for="comments">Ваши комментарии: </label><input type="text" id="comments" value="">
    <input type="submit" value="Отправить" style="visibility:hidden;" id="sendComments">
</form>
<script type="text/javascript">
window.onload = function() {
    document.getElementById("comments").onkeyup = function() {
        if(this.value.length > 0) {
            document.getElementById("sendComments").style.visibility = "visible";
        } else {
            document.getElementById("sendComments").style.visibility = "hidden";
        }   
    }
}
</script>
</body>
</html>
1
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 54
26.10.2011, 12:24  [ТС]
Спасибо. Кнопка теперь появляется, но теперь текст с текстовой области не исчезает. У меня там была прописана функция для события onFocus, которая стирала предложение типа "Здесь напишите текст комментария", а сейчас она не удаляется. Как быть? Я использовал скрипт Vicont.

Кстати, вторая идея тоже интересная, где-нибудь обязательно пригодится.
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
26.10.2011, 12:36
Ну допишите в onfocus имя вашей функции, которая стирает начальный текст:

HTML5
1
<textarea onfocus="clearStartText(); document.getElementById('subbut').style.display = 'inline'" onblur="document.getElementById('subbut').style.display = 'none'">Здесь текст комментария</textarea>
Только поименуйте её, конечно.

Например, она может выглядеть так:
JavaScript
1
2
3
4
5
6
function clearStartText(element) {
    var startText = "Здесь текст комментария";
    if (element.value == startText) {
        element.value = ""
    }
}
Тогда вызываем так:
HTML5
1
<textarea onfocus="clearStartText(this); document.getElementById('subbut').style.display = 'inline'" onblur="document.getElementById('subbut').style.display = 'none'">Здесь текст комментария</textarea>
P.S. кстати, в варианте Vicont, кнопка никогда не будет нажата. Событие onblur наступает раньше, чем onclick по кнопке отправки. И кликает пользователь по пустому месту.
1
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 54
26.10.2011, 12:46  [ТС]
Т.е. по скрипту Vicont форма отправляться не будет?

И теперь еще надо, чтобы текст "Здесь текст комментария" заново появлялся при событии onBlur.
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
26.10.2011, 12:57
Будет, если enter нажать. А по кнопке — нет. Как вариант можно вставить задержку на полсекунды, перед тем как кнопка прячется, но тогда, если пользователь набрал комментарий, выделил, например, на странице текст, а потом захотел отправить комментарии — не получится. Вначале придётся кликать опять по текстовому полю, а затем целиться в кнопку.

Добавлено через 7 минут
Вот доработанный вариант моего примера, с учётом ваших пожеланий (приглашение в поле, textarea вместо input).
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html><head><title>Пример 2: работаем с кнопкой submit</title></head>
<body>
<form name="commentsForm" id="commentsForm" action="myPhp.php">
        <textarea type="text" id="comments">Здесь ваши комментарии</textarea>
        <input type="submit" value="Отправить" style="visibility:hidden;" id="sendComments">
</form>
<script type="text/javascript">
var commentsStartText="Здесь ваши комментарии";
window.onload = function() {
        document.getElementById("comments").onkeyup = function() {
                if(this.value.length > 0 && this.value!=commentsStartText) {
                        document.getElementById("sendComments").style.visibility = "visible";
                } else {
                        document.getElementById("sendComments").style.visibility = "hidden";
                }       
        }
        document.getElementById("comments").onfocus = function() {
        if (this.value == commentsStartText) {
            this.value = "";
        }
    }
        document.getElementById("comments").onblur = function() {
        if (this.value.length == 0) {
            this.value = commentsStartText;
        }
    }
}
</script>
</body>
</html>
1
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 54
26.10.2011, 13:03  [ТС]
Классно! Спасибо. Сейчас опробуем.
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
26.10.2011, 13:15
А вот финальный вариант. Теперь переменная commentsStartText берётся из первоначального значения поля. То есть можно просто менять приглашение в HTML, не внося изменений в программу. Изменён javascript-код, привожу только его.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">
var commentsStartText="";
window.onload = function() {
    commentsStartText=document.getElementById("comments").value;
        document.getElementById("comments").onkeyup = function() {
                if(this.value.length > 0 && this.value!=commentsStartText) {
                        document.getElementById("sendComments").style.visibility = "visible";
                } else {
                        document.getElementById("sendComments").style.visibility = "hidden";
                }       
        }
        document.getElementById("comments").onfocus = function() {
        if (this.value == commentsStartText) {
            this.value = "";
        }
    }
        document.getElementById("comments").onblur = function() {
        if (this.value.length == 0) {
            this.value = commentsStartText;
        }
    }
}
</script>
1
front-end developer
 Аватар для Vicont
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
26.10.2011, 16:25
Цитата Сообщение от Mr.Nix Посмотреть сообщение
Понимаю, это делается банально используя события onFocus и onBlur, но хотелось бы увидеть скрипт.
Именно для этого я и привел пример.
0
0 / 0 / 0
Регистрация: 25.10.2011
Сообщений: 54
26.10.2011, 16:27  [ТС]
Да, я понял, спасибо за отзыв.
0
front-end developer
 Аватар для Vicont
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
26.10.2011, 16:28
Вот рабочий вариант скрипта:
HTML5
1
2
<textarea onfocus="document.getElementById('subbut').style.display = 'block'" onblur="if (!this.value)document.getElementById('subbut').style.display = 'none'">Здесь текст комментария</textarea>
<input type="submit" value="Добавить" id="subbut" style="display: none"/>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2011, 16:28
Помогаю со студенческими работами здесь

Форма появляющаяся при загрузке основной формы
Здравствуйте, пожалуйста подскажите как вывести вторую форму при загрузке первой без всяких дополнительных кнопок как на рисунке? Заранее...

кнопка отправки формы
есть такая кнопочка: &lt;a href=&quot;#&quot; style=&quot;background-image:url(pics/btn.gif); width: 56px; height: 21px;&quot; ...

Кнопка: hover отправки формы в виде треугольника
Имеется кнопка в виде треугольника, рисунок сохранен в пнг с прозрачным фоном Т.к. при значении hover учитывается не контур рисунка, а...

После отправки Ajax формы остается кнопка с индикатором загрузки
После сохранения данных через форму успешно происходит переход на нужную страницу, но кнопка save с индикатором загрузки не исчезает,...

Съезжает картинка-кнопка отправки данных формы в Google Chrome
Помогите, пожалуйста! У меня в Google Chrome съезжает картинка-кнопка отправки данных формы:( Скрин во вложении. А это фрагмент кода css: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru