Перейти к содержимому

Как сделать кнопку в javascript

  • автор:

Как сделать кнопку в javascript

Для отправки введенных данных на форме используются кнопки. Для создания кнопки используется либо элемент button :

Либо элемент input :

С точки зрения функциональности в html эти элементы не совсем равноценны, но в данном случае они нас интересуют с точки зрения взаимодействия с кодом javascript.

При нажатии на любой из этих двух вариантов кнопки происходит отправка формы по адресу, который указан у формы в атрибуте action , либо по адресу веб-страницы, если атрибут action не указан. Однако в коде javascript мы можем перехватить отправку, обрабатывая событие click

      

При нажатии на кнопку происходит событие click , и для его обработки к кнопке прикрепляем обработчик sendForm . В этом обработчике проверяем введенный в текстовое поле текст. Если его длина меньше 3 символов, то выводим сообщение о недостимой длине и прерываем обычный ход события с помощью вызова e.preventDefault() . В итоге форма не отправляется.

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

Отправка формы через JavaScript

Также мы можем при необходимости при отправке изменить адрес, на который отправляются данные:

function sendForm(e) < // получаем значение поля key const keyBox = document.search.key; const val = keyBox.value; if(val.length >3) < alert("Недопустимая длина строки"); document.search.action="PostForm"; >else alert("Отправка разрешена"); >

В данном случае, если длина текста меньше 3 символов, то текст отправляется, только теперь он отправляется по адресу PostForm , поскольку задано свойство action:

document.search.action="PostForm";

Очистка формы

Для очистки формы предназначены следующие равноценные по функциональности кнопки:

 

При нажатию на кнопки произойдет очистка форм. Но также функциональность по очистке полей формы можно реализовать с помощью метода reset() :

function sendForm(e) < // получаем значение поля key const keyBox = document.search.key; const val = keyBox.value; if(val.length < 3)< alert("Недопустимая длина строки"); document.search.reset(); e.preventDefault(); >else alert("Отправка разрешена"); >

Кроме специальных кнопок отправки и очистки на форме также может использоваться обычная кнопка:

При нажатии на подобную кнопку отправки данных не происходит, хотя также генерируется событие click:

      

При нажатии на кнопку получаем введенный в текстовое поле текст, создаем новый элемент параграфа для этого текста и добавляем параграф в элемент printBlock.

Как сделать кнопку в javascript

Есть список сообщений.

При помощи JavaScript для каждого сообщения добавьте в верхний правый угол кнопку закрытия.

Результат должен выглядеть, как показано здесь:

Чтобы добавить кнопку закрытия, мы можем использовать либо position:absolute (и сделать плитку ( pane ) position:relative ) либо float:right . Преимущество варианта с float:right в том, что кнопка закрытия никогда не перекроет текст, но вариант position:absolute даёт больше свободы для действий. В общем, выбор за вами.

Тогда для каждой плитки код может выглядеть следующим образом:

pane.insertAdjacentHTML("afterbegin", '

Элемент становится pane.firstChild , таким образом мы можем добавить на него обработчик события:

pane.firstChild.onclick = () => pane.remove();

Курсы javascript

Доброго времени суток. В JS новичок. Хочу создать кнопку, и навесить на нее событие.
Вот что получилось
// ==UserScript==
// @name КНОПКА
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.youtube.com*
// @include https://www.youtube.com*
// @grant none
// ==/UserScript==

setTimeout(function()< var btn = document.createElement("button"); btn.appendChild(document.createTextNode("КНОПКА")); btn.onclick = function (); var sel = document.querySelectorAll("[id='upload-info']"); sel[1].appendChild(btn); >,1000)

Так работает, кнопка создается, и переходит на сайт по клику.

setTimeout(function()< var btn = document.createElement("button"); btn.appendChild(document.createTextNode("КНОПКА")); btn.onclick = function (); var sel = document.querySelector("upload-info"); sel.appendChild(btn); >,1000)

Так уже не работает, почему не знаю.

Но.. Я хочу навесить на эту событие, например, чтобы производимое при нажатии на эту кнопку действие было аналогично рядом расположенной красной кнопке "подписаться"

setTimeout(function()< var btn = document.createElement("button"); btn.appendChild(document.createTextNode("КНОПКА")); *!*btn.onclick = function ()< что сюда подставить? >;*/!* var sel = document.querySelectorAll("[id='upload-info']"); sel[1].appendChild(btn); >,1000)

вот сама кнопка

Подписаться 14 тыс. 
yt-formatted-string.ytd-subscribe-button-renderer

пробовал разные варианты, ничего не получается

Создание кнопок на JavaScript API

Библиотека ui.buttons позволяет создавать кнопки не только разметкой, но и с помощью JavaScript API.

Подключение на странице
\Bitrix\Main\UI\Extension::load("ui.buttons");
Показ

Чтобы показать кнопку на странице, необходимо создать объект класса BX.UI.Button и вызвать метод renderTo .

  

Метод getContainer возвращает ссылку на DOM-элемент кнопки. Используйте его для гибкого построения интерфейсов.

var button = new BX.UI.Button(< text: "Привет, кнопка!" >); var layout = BX.create("div", < props: < className: "container" >, children: [button.getContainer()] >);

Размеры и заглавные буквы

Размеры

Размер кнопки задается опцией size и перечислением BX.UI.Button.Size .

var button = new BX.UI.Button(< text: "Привет, кнопка!", size: BX.UI.Button.Size.LARGE >);

Допустимые значения BX.UI.Button.Size :

  • BX.UI.Button.Size.LARGE — большая кнопка (47px)
  • BX.UI.Button.Size.MEDIUM — средняя кнопка (39px), значение по умолчанию
  • BX.UI.Button.Size.SMALL — маленькая кнопка (33px)
  • BX.UI.Button.Size.EXTRA_SMALL — максимально маленькая кнопка (26px)

Заглавные буквы

По умолчанию текст кнопки приводится к верхнему регистру. Опция noCaps=true позволяет отменить это поведение.

var button = new BX.UI.Button(< text: "Обычный текст", color: BX.UI.Button.Color.SUCCESS, noCaps: true >);

Цвета

Опция color отвечает за цвет кнопки. Значение этой опции задаются перечислением BX.UI.Button.Color .

var button = new BX.UI.Button(< text: "Привет, кнопка!", color: BX.UI.Button.Color.SUCCESS >);

Допустимые значения BX.UI.Button.Color: :

  • BX.UI.Button.Color.DANGER
  • BX.UI.Button.Color.DANGER_DARK
  • BX.UI.Button.Color.DANGER_LIGHT
  • BX.UI.Button.Color.SUCCESS
  • BX.UI.Button.Color.SUCCESS_DARK
  • BX.UI.Button.Color.SUCCESS_LIGHT
  • BX.UI.Button.Color.PRIMARY_DARK
  • BX.UI.Button.Color.PRIMARY
  • BX.UI.Button.Color.SECONDARY
  • BX.UI.Button.Color.LINK
  • BX.UI.Button.Color.LIGHT
  • BX.UI.Button.Color.LIGHT_BORDER

Состояния

Кнопка может иметь состояние. Например, быть активной или заблокированной. Опция state и перечисление BX.UI.Button.State управляют этой возможностью.

var button = new BX.UI.Button(< text: "Привет, кнопка!", state: BX.UI.Button.State.DISABLED >);

Допустимые значения BX.UI.Button.State :

  • BX.UI.Button.State.HOVER — состояние при наведении мыши
  • BX.UI.Button.State.ACTIVE — состояние при нажатии
  • BX.UI.Button.State.DISABLED — заблокировано
  • BX.UI.Button.State.CLOCKING — ожидание в виде "часиков"
  • BX.UI.Button.State.WAITING — ожидание в виде "спиннера"

Тег кнопки

По умолчанию кнопка отображается с помощью тега . С помощью параметра tag и перечисления BX.UI.Button.Tag кнопка может стать ссылкой или input-элементом.

var button = new BX.UI.Button(< text: "Привет, кнопка!", tag: BX.UI.Button.Tag.LINK >);

Допустимые значения BX.UI.Button.Tag :

  • BX.UI.Button.Tag.BUTTON — тег
  • BX.UI.Button.Tag.LINK — тег
  • BX.UI.Button.Tag.SUBMIT — тег
  • BX.UI.Button.Tag.INPUT — тег

Иконка

Для создания кнопок с иконкой используется параметр icon и перечисление BX.UI.Button.Icon .

var button = new BX.UI.Button(< text: "Привет, кнопка!", icon: BX.UI.Button.Icon.INFO >);

Допустимые значения BX.UI.Button.Icon :

  • BX.UI.Button.Icon.UNFOLLOW
  • BX.UI.Button.Icon.FOLLOW
  • BX.UI.Button.Icon.ADD
  • BX.UI.Button.Icon.STOP
  • BX.UI.Button.Icon.START
  • BX.UI.Button.Icon.PAUSE
  • BX.UI.Button.Icon.ADD_FOLDER
  • BX.UI.Button.Icon.SETTING
  • BX.UI.Button.Icon.TASK
  • BX.UI.Button.Icon.INFO
  • BX.UI.Button.Icon.SEARCH
  • BX.UI.Button.Icon.PRINT
  • BX.UI.Button.Icon.LIST
  • BX.UI.Button.Icon.BUSINESS
  • BX.UI.Button.Icon.BUSINESS_CONFIRM
  • BX.UI.Button.Icon.BUSINESS_WARNING
  • BX.UI.Button.Icon.CAMERA
  • BX.UI.Button.Icon.PHONE_UP
  • BX.UI.Button.Icon.PHONE_DOWN
  • BX.UI.Button.Icon.PHONE_CALL
  • BX.UI.Button.Icon.BACK
  • BX.UI.Button.Icon.REMOVE
  • BX.UI.Button.Icon.DOWNLOAD
  • BX.UI.Button.Icon.DONE
  • BX.UI.Button.Icon.DISK
  • BX.UI.Button.Icon.LOCK
  • BX.UI.Button.Icon.MAIL
  • BX.UI.Button.Icon.CHAT
  • BX.UI.Button.Icon.PAGE
  • BX.UI.Button.Icon.CLOUD
  • BX.UI.Button.Icon.EDIT
  • BX.UI.Button.Icon.SHARE

HTML-атрибуты

Опция props позволяет установить произвольные HTML-атрибуты кнопки. Например, href для кнопки-ссылки или data-атрибут.

var button = new BX.UI.Button( < text: "Подключить", size: BX.UI.Button.Size.LARGE, tag: BX.UI.Button.Tag.LINK, color: BX.UI.Button.Color.LIGHT_BORDER, props: < href: "/", id: "my-link-id", "data-role": "action" >>);

Также можно установить свой CSS класс-модификатор.

var button = new BX.UI.Button(< text: "Подключить", className: "my-button" >);

Обработка событий

Основное предназначение кнопок — это выполнение некоторого действия после нажатия. Если кнопка представляет собой ссылку, то достаточно определить атрибут href (см. пример выше). В остальных случаях требуется написать обработчик нажатия в параметре onclick .

var button = new BX.UI.Button( < text: "Активировать", size: BX.UI.Button.Size.LARGE, color: BX.UI.Button.Color.SUCCESS, onclick: function(button, event) < if (button.isActive()) < button.setText("Активировать"); button.setActive(false); >else < button.setText("Деактивировать"); button.setActive(); >> >);

Обработчик получает два аргумента: объект кнопки button (экземпляр класса BX.UI.Button ) и объект нажатия мыши event .

Для установки других браузерных событий используется опция events .

var button = new BX.UI.Button(< text: "Нажми меня", size: BX.UI.Button.Size.LARGE, color: BX.UI.Button.Color.SUCCESS, events: < click: function(button, event) < button.setActive(!button.isActive()); console.log("click", button, event); >, mouseenter: function(button, event) < console.log("mouseenter", button, event); >, mouseout: function(button, event) < console.log("mouseout", button, event); >> >);

Круглая и Dropdown кнопки

Для создания круглой кнопки необходимо установить параметр round в значение true .

var button = new BX.UI.Button(< text: "Круглая кнопка", color: BX.UI.Button.Color.PRIMARY, round: true >);

Опция dropdown=true добавляет иконку в виде стрелки справа от названия кнопки. Такой внешний вид предполагает показ меню после нажатия.

var button = new BX.UI.Button(< text: "Dropdown", color: BX.UI.Button.Color.PRIMARY, dropdown: true >);

Меню

Одним из стандартных сценариев использования кнопок является показ контекстного меню после нажатия. Параметр menu определяет те же самые настройки, что и класс BX.PopupMenuWindow . Кнопка автоматически становится активной после открытия меню и неактивной, когда меню закрыто.

var button = new BX.UI.Button(< text: "Меню", color: BX.UI.Button.Color.PRIMARY, dropdown: true, menu: < items: [ < text: "Детальное описание", href: "/path/to/page" >, < text: "Редактировать", disabled: true >, < text: "Перенести", onclick: function(event, item) < alert("Обработка нажатия на пункт"); >>, < delimiter: true >, < text: "Закрыть", onclick: function(event, item) < item.getMenuWindow().close(); >> ], closeByEsc: true, offsetTop: 5, >, >);

Двойная кнопка

Для создания двойной кнопки используется класс BX.UI.SplitButton . Он является наследником класса BX.UI.Button , поэтому настройки размера, цвета и иконки совпадают с настройками обычной кнопки.

var splitButton = new BX.UI.SplitButton(< text: "Добавить", color: BX.UI.Button.Color.PRIMARY, size: BX.UI.Button.Size.LARGE, icon: BX.UI.Button.Icon.BUSINESS >);

Однако состояние двойной кнопки определяется перечислением BX.UI.SplitButton.State .

var splitButton = new BX.UI.SplitButton(< text: "Добавить", color: BX.UI.Button.Color.PRIMARY, size: BX.UI.Button.Size.LARGE, icon: BX.UI.Button.Icon.BUSINESS, state: BX.UI.SplitButton.State.MENU_ACTIVE >);

Допустимые значения BX.UI.SplitButton.State :

  • BX.UI.SplitButton.State.HOVER
  • BX.UI.SplitButton.State.MAIN_HOVER
  • BX.UI.SplitButton.State.MENU_HOVER
  • BX.UI.SplitButton.State.ACTIVE
  • BX.UI.SplitButton.State.MAIN_ACTIVE
  • BX.UI.SplitButton.State.MENU_ACTIVE
  • BX.UI.SplitButton.State.DISABLED
  • BX.UI.SplitButton.State.MAIN_DISABLED
  • BX.UI.SplitButton.State.MENU_DISABLED
  • BX.UI.SplitButton.State.CLOCKING
  • BX.UI.SplitButton.State.WAITING

Параметры можно указывать как для целой кнопки, так и для отдельных ее частей. В опциях mainButton и menuButton задаются идивидуальные настройки основной и дополнительной кнопки.

var splitButton = new BX.UI.SplitButton(< text: "Добавить", color: BX.UI.Button.Color.PRIMARY, size: BX.UI.Button.Size.LARGE, icon: BX.UI.Button.Icon.BUSINESS, mainButton: < props: < href: "/" >, tag: BX.UI.Button.Tag.LINK >, menuButton: < onclick: function(button, event) < button.setActive(!button.isActive()); >, props: < "data-abc": "123" >, events: < mouseenter: function(button, event) < console.log("menu button mouseenter", button, event); >>, >, >);

Обработчики событий в первом аргументе получают объект класса BX.UI.SplitSubButton .

Стандартные кнопки

Для типовых кнопок "Сохранить", "Применить", "Отмена" и др. существуют вспомогательные классы. Эти классы предустанавливают цвет и текст кнопки.

Вспомогательные классы обычной кнопки (наследники BX.UI.Button ):

  • BX.UI.SaveButton
  • BX.UI.CreateButton
  • BX.UI.AddButton
  • BX.UI.SendButton
  • BX.UI.ApplyButton
  • BX.UI.CancelButton
  • BX.UI.CloseButton

Вспомогательные классы двойной кнопки (наследники BX.UI.SplitButton ):

  • BX.UI.SaveSplitButton
  • BX.UI.CreateSplitButton
  • BX.UI.AddSplitButton
  • BX.UI.SendSplitButton
  • BX.UI.ApplySplitButton
  • BX.UI.CancelSplitButton
  • BX.UI.CloseSplitButton

Любое предустановленное значение можно переопределить.

var button = new BX.UI.SaveButton(< color: BX.UI.Button.Color.PRIMARY >);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *