Скрипты - уровень ученик.
Всем привет. Учусь пока писать примитивные скриптики на jquery . Часто возникают вопросы как укоротить код и сделать его профессиональнее.
Вот например модальное окно. http://jsfiddle.net/hhhh/93eJa/ Есть два вопроса, как сделать код короче и если добавлять крестик и бэкграунд при клике на кнопку, скрипт не работает (открывается но уже не закрывается). |
Цитата:
|
|
hhh,
1. понять что на несуществующий элемент клик неповесить - выход создали элемент повесли клик или поитересовались что такое делегирование и воспользовалсь on. 2. при каждом открытии как-то не по пацански создавать то что уже создали в прошлый клик да ещё вешать обработчики повторно. |
Спасибо! Уже понятнее. Думаю бессмысленно добавлять при клике в модальном окне эти элементы.
Пошаманю с on. |
Модальное окно
hhh,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> - jsFiddle demo by hhhh</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.0.js'></script>
<style type='text/css'>
body{text-align:center}
.modal{position:fixed;top:50%;left:50%;z-index:1;display:none;margin:0 auto;margin-top:-100px;margin-left:-175px;width:350px;height:200px;background:#fff;border:3px solid #000;border-radius:3px;font-size:15px}
.modal-inner{display:table-cell;height:100%;vertical-align:middle;text-align:center;padding-top:30px}
.modal-inner input{margin-bottom:10px}
.modal-inner input[type=text]{display:inline-block;width:300px;height:30px;text-indent:10px}
.modal-inner input[type=submit]{display:inline-block;margin-top:10px;width:100px;height:25px;cursor:pointer}
button{margin-top:50px;padding:0;border:0;border-bottom:1px dashed #000;background:0;font-size:22px;cursor:pointer}
button:hover{border-bottom:1px dashed transparent}
#close{position:absolute;top:0;right:0;width:30px;height:30px;background:#000;color:#fff;cursor:pointer;text-align:center;font-size:15px;line-height:30px}
#bg-close{position:fixed;top:0;left:0;z-index:0;display:none;width:100%;height:100%;background:rgba(0,0,0,0.5);cursor:pointer}
</style>
<script>
$(function()
{
var divs =[{id: 'close', text: 'X', click: foo, appendTo: '.modal'},
{id: 'bg-close', click: foo, appendTo: 'body'}];
$.each(divs, function(indx, el)
{
$('<div/>', el)
}
);
function foo()
{
$('.modal')['fade' + (this.id? 'Out': 'In')](500);
$('#bg-close').css('display', this.id? 'none': 'block');
}
$('button').click(foo);
}
);
</script>
</head>
<body>
<div class="modal">
<div class="modal-inner">
<input type="text" value="Имя">
<input type="text" value="Телефон">
<input type="submit" value="Отправить">
</div>
</div>
<button>Заказать звонок</button>
</body>
</html>
|
То что надо. Буду смотреть, вникать и думать:)
|
Есть такой скрипт маски http://digitalbush.com/projects/masked-input-plugin/.
http://jsfiddle.net/hhhh/R7U4K/1/ Тут я написал изменение стилизация инпута после того как номер введен. А мне нужно сделать так чтобы текст подсвечивался красным и обводился бордером, если поле не заполнено до конца, когда инпут вне фокуса. Типо тултипа. Подскажите, пожалуйста, куда копать... |
Цитата:
|
Проблема в том что при клике на инпут появляется маска которая заполняет value.
С помощью блюр вывести тултип не тяжело, или сравнить если в value меньше 4 символов например. Я не пойму пока как повесить событие если в самой маске недостаточно символов. |
| Часовой пояс GMT +3, время: 05:00. |