Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не открывается календарь datapicker в ячейках таблицы (https://javascript.ru/forum/misc/67556-ne-otkryvaetsya-kalendar-datapicker-v-yachejjkakh-tablicy.html)

kupidon 24.02.2017 08:50

Не открывается календарь datapicker в ячейках таблицы
 
Доброго дня.
Подключаю календарь:
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">  
  <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
   <script type="text/javascript" src="test.js"> </script>


Есть таблица,в ячейки которой надо вставить даты из календаря:
<p>Date: <input id="datepicker" type="text" ></p> 
 
<table><tr><td class="edit payment_date 44380">11.11.2016</td></tr>
<tr><td class="edit payment_date 44381">12.11.2016</td></tr>
<tr><td class="edit payment_date 44381">13.11.2016</td></tr>
</table>


jQuery(document).ready(function ($){
               $(function() {
                 $("#datepicker").datepicker();
               });

		$(document).on('click', 'td.edit', function(){
            arr = $(this).attr('class').split( " " );
			$('.ajax').html($('.ajax input').val());       
			$('.ajax').removeClass('ajax');
			$(this).addClass('ajax');
			$(this).html('<input id="editbox" size="4" value="' + $(this).text() + '" type="text">');
			$('#editbox').select();
			$('#editbox').focus();
			$('#editbox').datepicker();
		});
})


так вот при нажатии на верхний инпут-календарь открывается мгновенно (это сделал для проверки).

При нажатии на ячейку таблицы- поле превращается в инпут, НО КАЛЕНДАРЬ включается в нем спустя 10-20 секунд. Что интересно - вчера работало все на отлично (по первому щелчку делался инпут, по второму открывался календарь сразу), но я что то сделал и начало тупить. Пол ночи не спал, пытался разобраться. Помогите пожалуйста.

рони 24.02.2017 10:07

datepicker изменение даты в ячейке таблицы
 
kupidon,
для изменения, кликнуть по дате, выбрать нужную в календаре.
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <script>
$(function() {
    $("td.edit").on("click", function(event) {
        event.pageY +=18;
        var self = this;
        $({}).datepicker("dialog", self.innerHTML, function(data) {
            $(self).html(data)
        }, {
            dateFormat: "dd.mm.yy"
        }, event)
    })
});
  </script>
</head>

<body>

<table>
<tr><td class="edit payment_date 44380">11.11.2016</td></tr>
<tr><td class="edit payment_date 44381">12.11.2016</td></tr>
<tr><td class="edit payment_date 44381">13.11.2016</td></tr>
</table>


</body>
</html>

kupidon 24.02.2017 15:34

Огромное Вам спасибо,за помощь. Запустил Ваш код, работает отлично.
Буду сегодня его под себя настраивать его.
У меня из датапикера была отправка в БД.
Подскажите пожалуйста: будет ли работать обработчик (который работал в предыдущем коде) теперь в вашем:

onSelect: function(dateText, inst) {
$.ajax({ type: "POST",
url:"test.php",
data: "value="+dateText+"&id="+arr2+"&field="+arr1+"&table="+table,
	success: function(data){
	$('.ajax').html($('.ajax input').val());
        $('.ajax').removeClass('ajax');
	 }, 
error: function(){
alert ("Ошибка отправки новых данных. Обратитесь к администратору.");
}
}); 
}


интересует именно вот эта часть кода: function(dateText, inst)

рони 24.02.2017 15:41

kupidon,
да function(data) { это тоже самое , откуда вы возьмте остальные данные дело ваше.

kupidon 24.02.2017 19:27

что-то не получается отправить пост запрос. firefox показывает, что запроса POST вообще не происходит, даже ошибки не выдает. Переменные для передачи рабочие (arr[1],arr[2],table).
Ячейка до редактирования имеет код:
<td class="edit2 payment_date 49864">00.00.0000</td>

По клику по ячейки, всплывает календарь, выбираю дату, она записывается новым значением в ячейку, но в БД не отправляется.


Что-то опять делаю не так :(

$(function() {
    $("td.edit2").on("click", function(event) {
    	arr = $(this).attr('class').split( " " );
    	$(this).addClass('ajax');
    	var table = $('.oplaty_online').attr('id');
        event.pageY +=10;
        var self = this;
        $({}).datepicker("dialog", self.innerHTML, function(data0) {
            $(self).html(data0)
        }, {
            dateFormat: "dd.mm.yy",
		    monthNames: [ "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" ],
		    dayNamesMin: [ "вс", "пн", "вт", "ср", "чт", "пт", "сб" ],
		    firstDay: 1,
		    altField: "#actualDate",
		    onSelect: function(data0) {
				$.ajax({ type: "POST",
				         url:"kuzzz_reportpost.php",
						 data: "value="+data0+"&id="+arr[2]+"&field="+arr[1]+"&table="+table,
						 success: function(data){
								 $('.ajax').html($('.ajax input').val());
								 $('.ajax').removeClass('ajax'); },   
						 error: function(){
						    alert ("Ошибка отправки новых данных. Обратитесь к администратору.");	}
				       }); 		 }		    
        }, event)
    })
});

рони 24.02.2017 19:39

kupidon,
строку 16 убрать, а содержимое перенести в строку 9

рони 24.02.2017 19:47

kupidon,
???зачем нужны эти строки непонятно, может их убрать?

$(function() {
    $("td.edit2").on("click", function(event) {
        var arr = $(this).attr('class').split(" ");
        $(this).addClass('ajax'); //???
        var table = $('.oplaty_online').attr('id');
        event.pageY += 10;
        var self = this;
        $({}).datepicker("dialog", self.innerHTML, function(data0) {
            $(self).html(data0);
            $.ajax({
                type: "POST",
                url: "kuzzz_reportpost.php",
                data: "value=" + data0 + "&id=" + arr[2] + "&field=" + arr[1] + "&table=" + table,
                success: function(data) {
                    $('.ajax').html($('.ajax input').val());//???
                    $('.ajax').removeClass('ajax'); //???
                },
                error: function() {
                    alert("Ошибка отправки новых данных. Обратитесь к администратору.");
                }
            });


        }, {
            dateFormat: "dd.mm.yy",
            monthNames: ["январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"],
            dayNamesMin: ["вс", "пн", "вт", "ср", "чт", "пт", "сб"],
            firstDay: 1,
            altField: "#actualDate"

        }, event)
    })
});

kupidon 24.02.2017 19:58

Спасибо большущее. Заработало!
$({}).datepicker("dialog", self.innerHTML, function(data0) {
            $(self).html(data0),
            $.ajax({ type: "POST",
				         url:"kuzzz_reportpost.php",
						 data: "value="+data0+"&id="+arr[2]+"&field="+arr[1]+"&table="+table,
						 success: function(data){
								 $('.ajax').html($('.ajax input').val());
								 $('.ajax').removeClass('ajax'); },   
						 error: function(){
						    alert ("Ошибка отправки новых данных. Обратитесь к администратору.");	}
				       })},

kupidon 24.02.2017 20:00

про какие строки вы говорили?

рони 24.02.2017 20:03

kupidon,
строки б,7,8 у вас бесполезные, ненужные пост №8 можно убрать или заменить 7,8 на алерт(жизнь прекрасна) но вам виднее


Часовой пояс GMT +3, время: 04:35.