Всплывающие только функции, как задумано, в третий раз, когда я его открываю? - PullRequest
0 голосов
/ 29 января 2020

У меня есть всплывающее окно, которое я хотел бы открыть, чтобы открыть интерактивный календарь, который позволяет пользователю вводить даты начала и окончания с помощью jquery datepicker. Однако в настоящее время при загрузке страницы я должен дважды открыть и закрыть всплывающее окно, прежде чем оно заработает, как задумано. Мне интересно, почему это происходит / как это исправить? Вот код

веб-страница в вопросе

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <title> {(BnB)} Market </title>
  </head>

<div id= 'user_listings'>
 </div>
 <body>
 Market BnB
 </body>
<a href = '/make_listings' > Looking to show your own listing? </a>
<div id = 'table'>
<table>
  <tr>
  <h1> BnB-able properties </h1>
  </tr> 
  <% @BnB.each do |record| %>
  <tr>
     <td class ='new_BnB'><%= record['address'] %> </td>
    <td class ='code_BnB'> | <%= record['post_code']%> </td>
    <br>

       <a id="OpenDialog" href="#">  <img src = <%= record['photo'] %> width="300" height="200" alt='test' >
    </a> 
    <div id="dialog" title="Property Info" style="display: none;" >
    <p>
<p>Start date: <input type="text" id="datepicker"> End date: <input type="text" id="datepicker2"></p>
 <input type = "submit" value='Submit'>
</p>

    </div>

    </tr>

    </table>
    <% end %>

    <head>

    <head>
<title></title>
</head>
<body>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/redmond/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

</body>

  <%# <title>jQuery UI Datepicker - Default functionality</title> %>

  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

</head>

  <script src="interface.js"></script>

</div>

интерфейс. js

 $(document).ready(function() {
    $("#OpenDialog").click(function () {
     $("#dialog").dialog({modal: true, height: 500, width: 700 });
   });
 });

  $( function() {
    $( "#datepicker" ).datepicker();
  } );
  $( function() {
    $( "#datepicker2" ).datepicker();
  } );

** значение @BnB **

require 'pg'

class BnBControl

  attr_accessor :connection

  def self.all
    @connection = PG.connect(dbname: 'bnb')

    listings = @connection.exec("SELECT * FROM properties")
  end
------
class BnB < Sinatra::Base
  enable :sessions

  get '/' do
    #if session[:user] 

      @BnB = BnBControl.all 

      erb :index_logged_in 
    # else
    #   erb :index
    # end
  end

это отдельные файлы, которые просто включены в один и тот же кодовый забор

1 Ответ

1 голос
/ 29 января 2020

вы используете document.ready, а также $(function(), которые одинаковы и не должны использоваться несколько раз. также вызовите функцию datepicker внутри $(document).ready перед обработчиком всплывающих окон, который должен работать для вас.

Попробуйте ниже

$(document).ready(function() {
    $( "#datepicker" ).datepicker();
    $( "#datepicker2" ).datepicker();
    $("#OpenDialog").click(function () {
     $("#dialog").dialog({modal: true, height: 500, width: 700 });
   });
});
...