Как сделать кнопку неактивной через JavaScript

Неактивная кнопка JS

Всем привет. Речь конечно же пойдет о кнопке на странице сайта или какого-то веб-приложения. Мы будем делать ее неактивной через JS, но для этого нам нужно создать условие, то есть в каких случаях кнопка будет неактивной, потому что оставлять е в этом положении навсегда не имеет смысла. В большинстве случаев это делается при проверке каких-то данных в форме и там как раз есть условие — если проверка на заданные условия пройдена, то кнопку сделаем активной, если нет — нажатие на кнопку будет запрещено. Я уже писал про валидацию номера телефона на JS, поэтому мы можем частично воспользоваться кодом, который приведен в статье. неактивная кнопка а HTML выглядит так:

<button disabled="true">Кнопка</button>

Или так:

<input type="submit" disabled value="Кнопка"/>


А так же:

<button disabled>Кнопка</button>
<input type="submit" disabled value="Кнопка"/>

То есть кнопке просто добавляется атрибут disabled и дальше будет зависеть от контекста. В каких случаях атрибуту присваивать значение TRUE, а в каких FALSE. Теперь можно перейти к конкретным примерам.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function validatePhone(phone){
 var regex = /^(\+7|7|8)?[\s\-]?\(?[489][0-9]{2}\)?[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}$/;
 return regex.test(phone);
}
 
let inp = document.querySelector('.inp');
let btn = document.querySelector('.btn');
btn.setAttribute('disabled', true);
 
inp.oninput = function(){
  let phone = document.querySelector('.inp').value;
  if (!validatePhone(phone)){
    btn.setAttribute('disabled', true);
  }else{
    btn.removeAttribute('disabled');
  }
}

Демо

Эта конструкция кода проверяет номер телефона в формате +7 и пока не будет введен верный номер в поле — кнопка останется неактивной. Как только номер будет соответствовать заявленным требованиям, то есть регулярному выражению — кнопка станет активной. То же самое мы можем сделать для Email адреса. Все, что нужно сделать, это поменять регулярное выражение в переменной regex, которое будет проверять именно Email.

Соответственно сделать кнопку неактивной на JS можно и для других данных, когда форма содержит гораздо больше полей и все их нужно проверить. В этом уроке я привел основной принцип, а реализация и проверки будут зависеть от конкретной задачи.

Как повесить 2 функции по нажатию одной кнопки в JavaScript (onclick)

2 функции на одно нажатие в JS

Привет, друзья. Есть задача: по нажатию одной кнопки должно срабатывать 2 функции в JS. Решается это очень просто, но у многих начинающих изучать программирование почему-то возникают с этим трудности. Давайте разберем пример с двумя функциями на событии onclick. И как и в предыдущем примере, когда мы делали нажатие на копку в JavaScript, можно пойти двумя способами. На странице есть такая кнопка:

<button type="submit" id="submit">Нажми меня</button>

Первый вариант:

1
2
3
4
5
6
7
8
document.querySelector("#submit").onclick = function(){
  console.log("Результат работы функции 1");
send2();
}
 
function send2(){
  console.log("Результат работы функции 2");
}

В итоге в консоли мы увидим ожидаемый результат:

Обе функции можно написать отдельно, что будет более правильным решением.

1
2
3
4
5
6
7
function send1(){
  console.log("Результат работы функции 1");
}
 
function send2(){
  console.log("Результат работы функции 2");
}

А потом написать либо так:

1
2
3
4
document.querySelector("#submit").onclick = function(){
send1();
send2();
}

Либо так:

<button type="submit" id="submit" onclick="send1(); send2();">Нажми меня</button>

И таким образом кнопка будет обрабатывать сразу две кнопки, то есть будут происходить какие-то действия по нажатию одной кнопки. И как вы смогли догадаться — функций на одно событие можно повесить гораздо больше, чем две. Единственное о чем нужно подумать, это о целесообразности такого подхода. Действительно ли нужна такая необходимость?

Нажатие на кнопку в JavaScript (событие и функции)

Клик по кнопке JS

Привет всем любителя программирования. Это довольно простой урок по такому событию в JavaScript, как нажатие на кнопку. не смотря на то, что это базовые вещи в JS, реализовать нажатие на кнопку можно разными способами. Давайте предположим, что у нас на странице есть некая кнопка.

<button type="submit" id="submit">Нажми меня</button>

Она пока никак не реагирует потому, что мы не повесили на нее никакого события. И давайте рассмотрим первый вариант.

1
2
3
document.querySelector("#submit").onclick = function(){
  alert("Вы нажали на кнопку");
}

Демо

Функция по нажатию кнопки в JavaScript

Событие по клику на кнопку мы создали, но можно сделать то же самое, только напишем функцию, с именем.

1
2
3
function alerted(){
  alert("Вы нажали на кнопку");
}

А к кнопке добавим эту функцию:

<button type="submit" id="submit" onclick="alerted();">Нажми меня</button>

Демо

Вывод на страницу по клику на кнопку в JS

Соответственно по нажатию на кнопку в JavaScript можно делать не только всплывающий alert, но и все, что угодно, передавать данные на сервер, изменять элементы на странице, удалять, копировать и много чего еще. Давайте рассмотрим еще один пример. напишем небольшую функцию, которая будет срабатывать по клику и выводить на страницу случайное число. Для этого под кнопкой добавим элемент DIV с классом sum, в котором будем выводить результат работы JavaScript функции.

<div class="sum"></div>

И сама функция:

1
2
3
function randomSum(min, max) {
  document.querySelector('.sum').innerHTML = (Math.floor(Math.random() * (max - min + 1) ) + min);
}

Для кнопки добавим эту функцию по нажатию:

<button type="submit" id="submit" onclick="randomSum(1000, 9999);">Нажми меня</button>

По нажатию на кнопку под ней будет выведено четырехзначное число от 1000 до 9999 в случайном порядке. Это мы указали в специальных параметрах min и max.

Демо

Нажатие правой кнопкой мыши в JS

Событие клика правой кнопкой мыши в JavaScript отличается от левой и по умолчанию вызывает стандартное контекстное меню браузера. Но мы его можем изменить. Во-первых убрать, а во-вторых задать свое действие.

Запрещаем вывод контекстного меню при клике правой кнопкой мыши:

1
<button type="submit" id="submit" oncontextmenu="return false">Нажми меня</button>

Выводим Alert:

1
2
3
4
document.querySelector("#submit").oncontextmenu = function(){
  alert("Вы нажали на кнопку");
  return false
}

Демо

Это простейший вызов функции по клику в JavaScript и усваивается без особых трудностей. В дальнейшем рекомендую изучать более сложные функции, которые делают различные операции. Например считают сумму, как в калькуляторе расчета стоимости. Надеюсь этот урок оказался для вас полезным. Если остались вопросы, вы всегда можете задать их в комментариях.

Отправляем Email через терминал Windows Powershell (командная строка)

Windows Powershell

Следует начать с того, что Windows Powershell — это не стандартная командная строка с черным фоном. Это другая оболочка и фон у нее темно-синий. Она поставляется в системы Windows начиная в 7 версии. И с ее помощью можно отравлять письма на почту через SMPT сервер. В некоторых случаях такой способ отправки Email может выручить, когда все другие по каким-то причинам вам недоступны. Ну и для общей практики и знакомства с терминалом Windows Powershell и некоторыми его командами, которые в нем называются — командлеты. Вызвать окно Powershell очень просто. Достаточно нажать Win + R и вписать туда Powershell.

Для отправки вам потребуется доступ к почте (логин и пароль). С этого адреса будет отправлен Email.

А вот и сам скрипт:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$EmailTo = "po4ta@mail.ru"
$EmailFrom = "PowerShell mymail@yandex.ru"
$Subject = "Отправка из PowerShell"
$Body = "Тестовое сообщение, <b>отправленное</b> из командной строки PowerShell"
$SMTPServer = "smtp.yandex.ru" 
$filenameAndPath = "C:\Users\777\Downloads\003435.pdf"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.IsBodyHTML=$true
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("mymail@ya.ru", "mymail123");
$SMTPClient.Send($SMTPMessage)

Теперь разберем более подробно.

1 Куда отправляем Email
2 Имя и адрес отправителя
3 Тема письма
4 Текст письма
5 Имя SMTP сервера
6 Путь к файлу-вложению (если нужен)
7, 8 Формирование объекта сообщения
9 Включение возможности отправлять HTML письма
10 Добавление вложения к письму
11 Указание порта SMTP сервера
12 Включение защищенного соединения SSl
13 Адрес и пароль почты. с которого будет отправка
14 Отправка сообщения

Особенное внимание прошу обратить на 9 строчку. Это полноценная возможность отправлять HTML письма через Windows Powershell по тому же принципу, как это делается в PHP. Необходимо ввести Email, кому вы хотите отправить сообщение, ввести свой адрес почты и пароль, написать текст, потом вставить все это в окно Powershell и нажать Enter. Можете потренироваться на своем ящике. У меня это выглядит вот так:

Отправка email через Windows Powershell
А само письмо вот так:
Email send from PowerShell

В основном эти терминалом пользуются системные администраторы и с его помощью можно решать различные задачи, но рядовому пользователю достаточно знать, что он есть (кстати многие не знают) и умеnь от править через него письмо. На этом знакомство с Windows Powershell подошло к концу. Напишите, знали вы о таком приложении в Виндовс или узнали впервые?

Длина строки и массива в PHP

Узнать длину строки и массива в PHP

Привет. В PHP довольно часто приходится работать со строками и массивами и почти во всех случаях требуется узнать их длину (length). Вполне типичная ситуация и для нее есть встроенные функции в PHP. Но есть некоторые нюансы, к примеру то, что одна из функций, которая показывает длину строки — srtlen считает не количество символов в тексте, а количество байт, который занимает каждый символ. Если латинский символ занимает 1 байт, то на кириллице он займет 2 байта. Об этом я же упоминал в статье по теме: как обрезать текст по количеству слов и символов. Но сейчас постараемся рассмотреть некоторые примеры более детально.

Узнать длину строки в PHP

Первая функция, которая будет вычислять длину строки в PHP, будет strlen.

1
2
3
$str = "Hello World";
echo strlen($str);
// 11 символов вместе с пробелом

А если мы напишем примерно то же самое, но на русском, то получим такой вариант:

1
2
3
$str = "Привет Мир";
echo strlen($str);
// 19 символов вместе с пробелом

В этом случае, как я уже говорил ранее, каждый символ займет 2 байта + 1 байт — это пробел. В итоге мы получим не совсем то, что ожидали. Поэтому в случае с кириллицей, чтобы определить длину строки, следует использовать другие функции. Первая — mb_strlen

1
2
3
$str = "Привет Мир";
echo mb_strlen($str);
// 10 символов вместе с пробелом

В этом случае подсчет символов в строки будет одинаковым как на английском, так и на русском языках. Даже если символ занимает несколько байт, то будет посчитан, как один. Так же есть еще одна функция, чтобы узнать длину строки в символах — iconv_strlen

1
2
3
$str = "Привет Мир";
echo iconv_strlen($str);
// 10 символов вместе с пробелом

iconv_strlen учитывает кодировку строки, ее можно указать вторым параметром. Если она не указана, то кодировка будет внутренней. То есть самого файла.

echo iconv_strlen($str, "UTF-8");

Если возникла необходимость проверить длину строки без пробелов, то потребуется дополнительная функция str_replace

1
2
3
4
$str = "Привет Мир";
echo iconv_strlen(str_replace(' ', '', $str));
// 9 символов без пробелов
//iconv_strlen или mb_strlen

Узнать длину массива в PHP

функция, которая позволяет узнать длину массива в PHP — count.

1
2
3
$arr = ["Иван", "Марина", "Сергей", "Алина"];
echo 'Длина массива ' . count($arr) . ' элемента';
// Длина массива: 4 элемента

То же самое будет с массивом, где есть ключи и значения.

1
2
3
$arr = ['name' => "Иван", "city" => "NY", "age" => 34];
echo 'Длина массива ' . count($arr) . ' элемента';
// Длина массива: 3 элемента

Можно резюмировать:

strlen() Подсчет количества байт в строке
mb_stren() Подсчет символов в строке
iconv_strlen() Подсчет символов строки с учетом кодировки
count() Подсчет элементов массива

На этом можно завершить. Теперь вы можете самостоятельно узнать длину строки в PHP и определить длину массива. А если возникнут вопросы, задавайте их в комментариях.