Рубрика: WEB
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с разработкой для WEB
Жизнь замечательных грибов
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с разработкой для WEB
К сожалению наиболее часто упоминаемый в «интернетах» плагин maskedinput не очень хорошо работает на мобильных устройствах. Адекватной заменой может служить плагин inputmask: https://github.com/RobinHerbots/Inputmask
Один огромный минус — уж очень «жирноват» плагин для простых задачь. Иногда лучше использовать «чистый» 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <input value="+7(___)___-____"> <script> window.addEventListener("DOMContentLoaded", function() { function setCursorPosition(pos, elem) { elem.focus(); if (elem.setSelectionRange) elem.setSelectionRange(pos, pos); else if (elem.createTextRange) { var range = elem.createTextRange(); range.collapse(true); range.moveEnd("character", pos); range.moveStart("character", pos); range.select() } } function mask(event) { var matrix = this.defaultValue, i = 0, def = matrix.replace(/\D/g, ""), val = this.value.replace(/\D/g, ""); def.length >= val.length && (val = def); matrix = matrix.replace(/[_\d]/g, function(a) { return val.charAt(i++) || "_" }); this.value = matrix; i = matrix.lastIndexOf(val.substr(-1)); i < matrix.length && matrix != this.defaultValue ? i++ : i = matrix.indexOf("_"); setCursorPosition(i, this) } var input = document.querySelector("input"); input.addEventListener("input", mask, false) }); </script> </body> </html> |
По мотивам этой статьи. В очередной раз обновилась тема Twenty Fourteen и в очередной раз нужно менять css файл style.css, чтобы тема нормально смотрелась на очень широких экранах. На этот раз решил подойти радикально — и обновления не терять, и руками каждый раз не править. А именно: заходим в настройки темы -> дополнительные стили и копируем туда код:
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 31 32 33 34 35 36 37 38 |
.site { max-width: 100% !important; } .site-header { max-width: 100% !important; } .hentry { max-width: 100% !important; } .site-content .entry-header, .site-content .entry-content, .site-content .entry-summary, .site-content .entry-meta, .page-content { max-width: 80% !important; } .image-navigation { max-width: 80% !important; } .archive-header, .page-header { max-width: 80% !important; } .contributor-info { max-width: 80% !important; } .comments-area { max-width: 80% !important; } .site-main .mu_register, .widecolumn > h2, .widecolumn > form { max-width: 80% !important; } |
Сильно надеюсь, что на этом все.
Update 08.11.2021:
Кроссплатформенное решение, не требующее Jquery:
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 31 32 33 34 35 36 37 |
function getCaretPosition(ctrl) { if (document.selection) { ctrl.focus(); var range = document.selection.createRange(); var rangelen = range.text.length; range.moveStart('character', -ctrl.value.length); var start = range.text.length - rangelen; return { 'start': start, 'end': start + rangelen }; } else if (ctrl.selectionStart || ctrl.selectionStart == '0') { return { 'start': ctrl.selectionStart, 'end': ctrl.selectionEnd }; } else { return { 'start': 0, 'end': 0 }; } } function setCaretPosition(ctrl, start, end) { if (ctrl.setSelectionRange) { ctrl.focus(); ctrl.setSelectionRange(start, end); } else if (ctrl.createTextRange) { var range = ctrl.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } }; |
Использование:
1 2 3 4 |
//прочитаем позицию с выделеним outpz = getCaretPosition(document.getElementById('summpayme')); //установим позицию с выделением setCaretPosition(document.getElementById('summpayme'),outpz.start, outpz.end); |
Иногда требуется на всякий случай иметь бекапы конфигурации работающих в данный момент свичей. Один из вариантов — поднимаем сервер TFTP и просим свич сохранить свою конфигурацию на него.
Пример скрипта:
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 31 32 33 34 35 36 37 |
PutLog("-- Стартуем сохранение конфиги у $device_name"); $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.3.3 a $tftpserver"; PutLog("--- устанавливаем tftp сервер: $cm"); $rez=`$cm`; if (strripos($rez,"IpAddress")>0){ $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.5.3 s $device_name.cfg"; PutLog("---- устанавливаем имя файла: $cm"); $rez=`$cm`; if (strripos($rez,"STRING")>0){ $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.8.3 i 2"; PutLog("----- устанавливаем конфиг для сохранения: $cm"); $rez=`$cm`; if (strripos($rez,"INTEGER")>0){ $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.12.3 i 3"; PutLog("----- сохраняем конфиг : $cm"); $rez=`$cm`; if (strripos($rez,"INTEGER")>0){ sleep(10); //переименуем полученный файл $newname=$device_name.Date("-Y-m-d-H-i"); $rez=`mv /var/tftp/$device_name.cfg /var/tftp/$newname.cfg`; echo "$rez\n"; //добавим в архив $rez=`zip /var/tftp/$device_name.zip -m /var/tftp/$newname.cfg`; echo "$rez\n"; } else { PutLog("-- ОШИБКА сохранения конфига"); }; } else { PutLog("-- ОШИБКА установки конфига"); }; } else { PutLog("-- ОШИБКА установки имени файла"); }; } else { PutLog("-- ОШИБКА установки tftp сервера у $device_name"); }; |