Самопроизвольное открытие datepicker в диалоговом окне
Всем привет.
Не могу разобраться, прошу подмоги. Банальная задачка открыть форму с календариком в диалоговом окне. И календарик и окно беру из jQuery UI Проблема в том, что при открытии окна открывается и календарь, что не желательно. Кроме того - после неудачной валидации формы функцией sendRequest календарь тоже открывается. (функция sendRequest на самом деле кривая, привел ее потомучто не могу понять почему она инициирует окрытие календаря.) <div id="dialog" style="display:none"> <form action="#" name="request" method="post"> <label>Дата заезда</label><input class="ahtung" id="request_datepicker" name="request[date_begin]" type="text" readonly="readonly" value="" /> <input id="obj_id" name="request[obj_id]" type="hidden" value="" /> <input name="request_submit" type="submit" value="Отправить запрос" /> </form> </div> $(function() { $("#dialog").dialog( { autoOpen: false, position: ['center', 'center'], modal: true, resizable: false, width: 750, hide: 'explode', show: 'fold' }); $(".request").click(function() { $('form[name=request]').submit(sendRequest); $("#dialog #obj_id").val($(this).attr('id')); $("#dialog").dialog("option", "title", 'Запрос цен и свободных мест для объекта - ' + $(this).attr('name')); $("#dialog").dialog("open"); $('#request_datepicker').datepicker( { dateFormat: "yy-mm-dd", minDate: 0 }); }); function sendRequest() { $('#dialog .ahtung').each(function() { if(!$(this).val()) { alert('Не заполнено обязательное поле "' + $(this).siblings('label').html()+ '"'); return false; } }) return false; } }); |
Работающий пример где нибудь в fiddle покажи.
Ты не представляешь насколько в лом брат твой скрипт и html вставлять его куда то потом подключать либы, потом дофантазировать где у тебя должен быть html элемент с классом .request так как в html у тебя его нету ну и т.д. |
Вот закинул балванку на времянку)
http://igrushkivdom.ru/ |
Забыл.
Нужно на кнопу "наличие мест" жмакнуть. В опере валидация формы не открывает календарь, в фаерфоксе открывает ??? |
Я не могу редактировать этот код и проверить свои мысли. К сожалению пока ты не выложишь кусок кода на http://jsfiddle.net/ который я или другие форумчане сможем редактировать то мы не сможем проверять свои идеи и гипотезы. Почему и просил пример для редактирования.
На вскидку могу предложить несложный трюк. //подключаем datepicker $('#request_datepicker').datepicker({ dateFormat: "yy-mm-dd", minDate: 0 }); //подключаем диалог $("#dialog").dialog({ autoOpen: false, open: function (event, ui) { //если есть открытые datepicker тогда закроем их if ($(".ui-datepicker").is(":visible")) $(".ui-datepicker").hide(); }, close: function () { $(this).dialog("close"); } }); //теперь можно открывать диалог $('какаятокнопка').click(function(){ $("#dialog").dialog("open"); }) |
как пожелаете))
http://jsfiddle.net/bb2G2/ |
<input id="from" type="text" tabindex="-1" />
вот смотри сам http://jsfiddle.net/bb2G2/2/ и вот этот способ кстатии тоже работает. if ($(".ui-datepicker").is(":visible")) $(".ui-datepicker").hide(); |
DjDiablo,
Спасибо. А гдето можно прочитать о физике процесса? Хочется же понять как жыкверя работает, она что при открытии диалогового окна по всем инпутам фокусом пробегает ??? если да, то нахрена?? ну и т.д. |
Вот еще одна демка
http://jsfiddle.net/bb2G2/4/ Почитать разве что в исходниках. Думаю просто фокус на первое поле устанавливается при открытии диалога. Если datepicker будет вторым полем а не первым то открываться он не будет. Вот пример http://jsfiddle.net/bb2G2/5/ |
Часовой пояс GMT +3, время: 22:49. |