Титла: jquery datepicker да се зареди от трети файл
Публикувано от: nov_chovek в Jan 16, 2011, 17:23
Здравейте! Имам проблем при извивкането на jquery datepicker в модален диалог (пак jquery). Идеята е следната: Със следният скприпт се парсва външен файл, който съдържа формата на модалния диалог: GeSHi (Javascript): $(document).ready(dialogForms); function dialogForms() { $('a#dialog-link').click(function() { var a = $(this); $.get(a.attr('href'),function(resp){ var dialog = $('<div>').attr('id','').html($(resp).find('form:first').parent('div').html()); $('body').append(dialog); $('body').append(dialog); dialog.find(':submit').hide(); dialog.dialog({ title: a.attr('title') ? a.attr('title') : '', modal: true, buttons: { 'Save': function() {submitFormWithAjax($(this).find('form'));$(this).dialog('close');}, 'Cancel': function() {$(this).dialog('close');} }, close: function() {$(this).remove();}, width: '300px' }); }, 'html'); return false; }); } function submitFormWithAjax(form) { form = $(form); $.ajax({ url: form.attr('action'), data: form.serialize(), type: (form.attr('method')), dataType: 'script' }); return false; }
Скрипта го намерих из нета, не съм го писал аз. Та горния скприпт парсва форма, която е в отделен втори файл и помага за събмитването и. В този втори файл има datepicker, който обаче не се зарежда. GeSHi (Javascript): $(function(){ $("#date1").datepicker({ dateFormat: 'dd.mm.yy', firstDay: 1, showOn: "button", buttonImage: "../images/datepicker.gif", buttonImageOnly: true }); $("#date1").datepicker('setDate', '<? echo $date1; ?>'); $("#date2").datepicker({ dateFormat: 'dd.mm.yy', firstDay: 1, showOn: "button", buttonImage: "../images/datepicker.gif", buttonImageOnly: true }); $("#date2").datepicker('setDate', '<? echo $date2; ?>'); });
Проблемът е че формата се зарежда и се събмитва, но дейтпикъра не се зарежда! Проббвах да добавя в този втория файл нови връзки към jquery, понеже си мислех че не се зарежда: GeSHi (Javascript): <link type="text/css" href="css/smoothness/jquery-ui-1.8.8.custom.css" rel="stylesheet" /> <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="js/jquery-ui-1.8.8.custom.min.js"></script>
Обаче, пак не се получава. Някой може ли да помогне? GeSHi (Javascript):
Титла: Re: jquery datepicker да се зареди от трети файл
Публикувано от: neter в Jan 17, 2011, 20:01
Няма да се случи така. Кодът на datepicker-а (и въобще важи за всякакъв javascript) трябва не само да се излее като съдържание в html-а, но и да се изпълни. Имаш два варианта - да вкараш кода за инициализиране на datepicker-а в основния (парсващия) файл, за да се изпълнява след кликване върху линка, или да вкараш кода за инициализиране в една функция във втория (парсвания) файл и да викаш тази функция след парсването. Избери си кое ще ти е по-удобно ;)
Титла: Re: jquery datepicker да се зареди от трети файл
Публикувано от: nov_chovek в Jan 18, 2011, 14:41
мерси neter :)
Не съм много вещ в JS , но ще се пробвам. Ако имам проблем да се съветваме пак? :)
Титла: Re: jquery datepicker да се зареди от трети файл
Публикувано от: neter в Jan 19, 2011, 10:57
//извън темата
Стига да намирам време, че напоследък доста окъся, с удоволствие ;) Не че аз съм кой знае колко вещ в JS, ама е забавна материя :)
Титла: Re: jquery datepicker да се зареди от трети файл
Публикувано от: VladSun в Jan 21, 2011, 02:58
Дай всички участващи файлове (JS, HTML и т.н.), по-лесно ще ни е.
Титла: Re: jquery datepicker да се зареди от трети файл
Публикувано от: nov_chovek в Jan 22, 2011, 17:47
окей... Накратко, визуализирам дати от базаданни, като всяка дата е линк. Като се кликне на нея, излиза модален диалог с форма и дейтпикър. Във формата се променя датата, чрез дейтпикъра и се събмитва php с новата стойност на датата, която се променя в базата. Това е :) ето ги и файловете: Файлът, в който като се кликне на линк и се отваря модалния диалог (index.php) GeSHi (PHP): <html> <link type="text/css" href="css/smoothness/jquery-ui-1.8.8.custom.css" rel="stylesheet" /> <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="js/jquery-ui-1.8.8.custom.min.js"></script> <script type="text/javascript" src="js/ajax-dialog-forms.js"></script> <div> <a href="index.php?date= <? echo $date; ?>" class="dialog-form" id="dialog-link" title="Change details">Click to change date</a> </div> </html>
Файлът който се зарежда в модалния диалог (form.php) GeSHi (PHP): <? $date=$_GET['date']; include 'config.php'; $sql="SELECT * FROM date WHERE date='$date' "; $date1=$row["date"]; ?> <script> $(function(){ $("#date1").datepicker({ dateFormat: 'dd.mm.yy', firstDay: 1, showOn: "button", buttonImage: "../images/datepicker.gif", buttonImageOnly: true }); $("#date1").datepicker('setDate', ' <? echo $date1; ?>'); }); </script> <div id="dialog" title="Basic dialog"> <form method="post" action="calendar/update-date.php"> Date 1: <input type="text" name="date1" id="date1"> </form> </div>
И пак скрипта който парсва външния файл(form.php и го изплюва в модлания диалог: GeSHi (Javascript): $(document).ready(dialogForms); function dialogForms() { $('a#dialog-link').click(function() { var a = $(this); $.get(a.attr('href'),function(resp){ var dialog = $('<div>').attr('id','').html($(resp).find('form:first').parent('div').html()); $('body').append(dialog); $('body').append(dialog); dialog.find(':submit').hide(); dialog.dialog({ title: a.attr('title') ? a.attr('title') : '', modal: true, buttons: { 'Save': function() {submitFormWithAjax($(this).find('form'));$(this).dialog('close');}, 'Cancel': function() {$(this).dialog('close');} }, close: function() {$(this).remove();}, width: '300px' }); }, 'html'); return false; }); } function submitFormWithAjax(form) { form = $(form); $.ajax({ url: form.attr('action'), data: form.serialize(), type: (form.attr('method')), dataType: 'script' }); return false; }
Титла: Re: jquery datepicker да се зареди от трети файл
Публикувано от: nov_chovek в Jan 22, 2011, 21:18
намерих решението...изгубих с този проблем доста време..
та...
във външния файл принтираме $date в <input type="hidden"> и после
в скрипта, който парсва външния файл, трябва да вземем стойността на hidden <input>-а с това:
$('input[name=date]').val()
и така парсващия файл получава php променливата през скития <input>
незнам дали е бързо и елегантно, но върши работа :)
|