Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > проблемма с JUI DatePicker


Автор: jone31 25.8.2011, 21:02
такая ситуация: в адресной строке написан запрос:  /?page=blablabla#комнады_запроса_для_ajax

ajax обрабатывает хеш и открывает модальное окно(JUI Dialog) в котором одно из полей это выбор даты с помощью DatePicker, пикер открывается все как положено..... но когда я нажимаю на нужную мне дату, то datepicker удалает хеш строку из запроса, ajax это подхватывает, закрывает окно и начинает обработку запроса - что мне совсем не нужно. 

в приложенном файле плагин начинается с 464 строки, а на 533 идет следующее: 

Код
"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+
(q.getTime()==u.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+
"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+
(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");M+=x}I+=M}I+=e+
(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" 
class="ui-datepicker-cover" frameborder="0"></iframe>':


- на этой строке сбрасывается хеш в пустую строку.

пробовал убрать href="#", заменить на void(0), добавить return false - во этих случаях пикер перестает реагировать на клики по дате.



помогите допилить плагин что бы хеш запроса не сбрасывался.

Автор: нуп 25.8.2011, 21:53
jquery datepicker не сбрасывает хэш. Думаю ваш скрипт это делает

Автор: jone31 25.8.2011, 22:01
если просто использовать плагин - то да, но если засунуть этот плагин в диалоговое окно то он начинает это делать.

из скриптов при открытии окна выполняется только сам скрипт открытия этого окна и всё... 

Автор: нуп 25.8.2011, 22:08
Я сам пользуюсь и dialog i datepicker/datetimepicker и никаких проблем не возникает с хэшэм. Выложите короткий пример с проблемой.  smile 

Автор: jone31 25.8.2011, 22:27
Код

<div id="Pages-Dialogs" style="display:;">
    <div id="dialog-create" title="создание">
    <form onsubmit="return false;">
<input name="date" id="datetimepicker" type="text" style="width:150px; background:none; padding:2px 5px; color:black;" maxlength="19" /><label style="padding-left:10px;"><input type="checkbox" />&nbsp;<b>Текущая дата</b></label>
    </form>
    </div>
</div>

<script>
function filemanager_dialog( type ){
    $.fx.speeds._default = 1000;
    $( "<div id='Pages-Dialog' style='display:none;'></div>" ).dialog({
        autoOpen:false,
        title:$("div#Pages-Dialogs div#dialog-"+type).attr("title"),
        closeOnEscape:true,
        hide:'fade',
        show: 'fade',
        modal:true,
        resizable:false,
        width:600,
        open: function(){ 
            $("div#navigation").hide("fade", 1000);
            tooltip_init(); // init
            $('div#Pages-Dialog #datetimepicker').datepicker(); // init
        },
        beforeClose:function(){ $("div#navigation").show("fade",1000); },
        close: function(){
            $(this).remove();
            current_id="";
        },
        buttons:{
            'Отмена': function(){ $(this).dialog("close"); },
            'Продолжить': function(){
                q = location.hash.replace("#","")+"&"+$("div#Pages-Dialog form").serialize()+"&action="+type+"&id="+current_id;
                ajax(q);
                $(this).dialog("close");
            }
        }
    });
    $("div#Pages-Dialog").html(document.getElementById("dialog-"+type).innerHTML.replace("{ID}",current_id));
    $("div#Pages-Dialog").dialog('open');
}


как то так... 

Автор: нуп 25.8.2011, 22:53
Ну это разве рабочий пример? чтобы взять и запустить скрипт?

Автор: jone31 26.8.2011, 16:26
Цитата(нуп @  25.8.2011,  22:53 Найти цитируемый пост)
Ну это разве рабочий пример? чтобы взять и запустить скрипт?

да легко, ниже файл распаковать и запустить. smile

Автор: нуп 26.8.2011, 17:05
Тот же самый пример. Урл не меняется 
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ без названия</title>
            <link rel="stylesheet" media="all" type="text/css" href="http://www.trentrichardson.com/examples/timepicker/css/ui-lightness/jquery-ui-1.8.14.custom.css" />
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
            <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
            <script type="text/javascript" src="http://www.trentrichardson.com/examples/timepicker/js/jquery-ui-timepicker-addon.js"></script>
</head>
<body>            
    <div id="dialog" >
        <form onsubmit="return false;">
    <input name="date" id="datetimepicker" class="ui-widget-header ui-corner-tl ui-corner-tr ui-corner-br ui-corner-bl" type="text" style="width:150px; background:none; padding:2px 5px; color:black;" maxlength="19" />
        </form>
        </div>    
</body>    
</html>
<script>            
$(document).ready(function() {
    $('#dialog').dialog( {
       open: function(){
            $('#datetimepicker').datetimepicker();
        }
    });
});
</script>


Автор: jone31 27.8.2011, 03:08
нет, если использовать приведенный код то открыть окно более одного раза не выполняя повторного запроса - не получится!

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

так же заметил что не работают кнопки переключения месяцев и кнопка Now - т.е. пикер вообще не работает.

Автор: нуп 27.8.2011, 09:55
проблема не в dialog и picker, она у вас в коде

Автор: jone31 27.8.2011, 12:03
Цитата(нуп @  27.8.2011,  09:55 Найти цитируемый пост)
проблема не в dialog и picker, она у вас в коде

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

проблемма в том что пикер не хочет правильно работает с только что созданным дивом и всё...

Автор: нуп 27.8.2011, 12:10
Не верю. У меня же работает. 

Автор: jone31 27.8.2011, 12:12
Цитата(нуп @  27.8.2011,  12:10 Найти цитируемый пост)
Не верю. У меня же работает. 

 smile а что тут верить? я в файле выше приложил код из документации к этому плагину, разницу только в том что используется созданный на лету див и всё...

Автор: нуп 27.8.2011, 12:34
Вы открывали этот файл через firebug какой-то, просто посмотреть ошибки?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)