Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Календарь datepicker (https://javascript.ru/forum/jquery/71467-kalendar-datepicker.html)

Гермес 21.11.2017 07:01

Календарь datepicker
 
Добрый день.
На сайте имеется календарь datepicker.
Задаю дату в календаре:
$('#calendar1').datepicker("setDate", "01-09-2017");
$('#calendar1').datepicker("refresh");
Как мне программно (без помощи мышки) симитировать нажатие именно этой даты (типа события Click())? :help:

Dilettante_Pro 21.11.2017 14:47

Гермес,
Не хочет работать ни один из вариантов
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <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.12.1/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>
  <p>Дата: <input type="text" id="datepicker"></p>
  <script>
      $("#datepicker").datepicker({ dateFormat: "dd-mm-yy"});
      $('#datepicker').datepicker("setDate", "01-09-2017");
      //   $('#datepicker').click();
      //   $('#datepicker').trigger('click');
      var event = new Event("click");
      datepicker.dispatchEvent(event);
     $('#datepicker').click( function() {
          alert(this.value);
    });

  </script>
</body>
</html>

а зачем вам нужно событие click?

рони 21.11.2017 16:18

:-?

Гермес 21.11.2017 19:18

Есть сайт: https://1xstavka.ru/results/
Мне необходимо чтобы при нажатии на кнопку "развернуть все" отображались матчи за 01.09.2017г. Проблема в том, что всегда отображаются данные за текущее число (если вручную в календаре не выбрана другая дата). Скриптом - выбираю нужную дату, но при нажатии на кнопку развернуть все отображаются данные за текущее число.

Dilettante_Pro 22.11.2017 11:21

Гермес,
А каким образом у вас берется дата из датапикера при нажатии Развернуть все ?

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

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <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.12.1/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>
  <p>Дата: <input type="text" id="datepicker"></p>
  <a id="resultsShowAll" href="javascript:void(0);" title="Развернуть все">Развернуть все</a>
  <script>
      var pick = $('#datepicker');
      pick.datepicker({ dateFormat: "dd-mm-yy"});
      pick.datepicker("setDate", "01-09-2017");

     $('#resultsShowAll').click( function() {
          alert(pick.val());
          // или так
          alert(pick.datepicker("getDate"));
    });

  </script>
</body>
</html>


Или вы меняете дату в датапикере юзерским скриптом на чужом сайте?
Возможно, что на сайте переменная с датой обновляется по событию change на датапикере.
Но программный вызов события change на датапикере, к сожалению, тоже не срабатывает
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <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.12.1/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>
  <p>Дата: <input type="text" id="datepicker"></p>
  <a id="resultsShowAll" href="javascript:void(0);" title="Развернуть все">Развернуть все</a>
  <script>
      var workdate = new Date();
      var pick = $('#datepicker');
      pick.datepicker({ dateFormat: "dd-mm-yy"});
      pick.datepicker("setDate", "01-09-2017");
      pick.trigger("change");

     $('#resultsShowAll').click( function() {
          alert(workdate);
     });

     pick.change(function() {
         workdate = pick.datepicker("getDate");
     });

  </script>
</body>
</html>

Гермес 22.11.2017 19:28

Добрый день.
Это чужой сайт. Хоть не получилось, но большое СПАСИБО за помощь, я Вам очень признателен.

Dilettante_Pro 23.11.2017 13:29

Гермес,
На сайте вполне срабатывает это:
$('#calendar1').datepicker("setDate", "01-09-2017"); $('#calendar1').trigger('change');

Гермес 23.11.2017 19:00

Огромное спасибо.
Да все работает.
Тему можно закрывать.


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