javascript - jQuery 日期选择器在第二次单击时不起作用

标签 javascript jquery jquery-ui cross-browser datepicker

任何人都可以帮我找到 http://dev.ther8server.com 的 from 和 to 部分中日期选择器背后的问题吗?

当我单击“日期”并选择一个日期并再次单击“日期选择器”时,不会弹出。我需要单击 to 或正文中的其他位置,然后再次单击 from 才能使其正常运行。我真的很难找到这个问题背后的原因。任何人都可以帮我提供任何建议吗?谢谢。

此问题仅在 Chrome 和 Safari 中出现。它在 Firefox 中运行良好。

HTML 代码:

<li class="date-field" id="from">
                    <a href="#" onclick="return false;" class="calendar">opener</a>
                    <input type="text" value="Check in" name="date_in" value="" /> 
                    <div class="datepicker-holder"></div> 
                  </li>
                  <li class="date-field" id="to">
                    <a href="#" onclick="return false;" class="calendar">opener</a>
                      <input type="text" value="Check out" name="date_out"  />
                      <div class="datepicker-holder"></div>
                  </li>

导入和 JS:

  <script type="text/javascript" src="/assets/js/jquery-1.8.3.min.js"></script>


  <script src="/assets/js/frontend/jquery-ui-1.10.2.custom.js"></script>

  <script type="text/javascript" src="/assets/js/jquery.main.js"></script>
  <script type="text/javascript" src="/assets/js/main.js"></script>
  <script type="text/javascript" src="/assets/js/loadmask/jquery.loadmask.js"></script>
  <!--[if lt IE 9]><link rel="stylesheet" type="text/css" href="/assets/css/ie.css" /><![endif]-->

  <script type="text/javascript">
  var jslocale = "en-AU";
  var ajaxload = "";

  var search_params = {"global_keywords":"","referer_page":"","keywords":"","room":false,"date_in":"","date_out":"","hotel_id":"","destination_id":"","date_in_stamp":"","date_out_stamp":"","view_type":"","trip_rating":"","star_rating":"","min_rate":"","max_rate":"","amenities":"","sort":"","all_results":"","roomCode":"","rateCode":"","bedCode":"","allStarsSelection":"","region_id":"","lang":null,"country":null,"curr":null}; 


  </script>

最佳答案

首先,我不太明白为什么你要使用那么多代码来管理两个简单的日期选择器,而不是仅仅使用 jQueryUI's default .

其次,我可以看到您在用户单击输入后打开了日期选择器,但绑定(bind)链接到 focus 事件而不是 click 事件。

当您选择日期时,您会隐藏日期选择器并以编程方式触发焦点事件以将光标返回到输入。问题是,焦点事件仅触发一次。仅通过单击已聚焦的元素不会再次触发它。直到您通过单击模糊事件外部来触发该事件。

your script 的快速而肮脏的建议。更改:

input.bind('focus',function(){
                showDatepicker();
            })

input.bind('click',function(){
            showDatepicker();
        })

关于javascript - jQuery 日期选择器在第二次单击时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601574/

相关文章:

javascript - jQuery ajax 发布成功后无法使用 XAMPP 在本地主机上获取正确的数据

javascript - CSS 并没有通过在 HTML 中调用 JS 来改变

html - 将 HTML 页面分成更小的 block 并使用 AJAX 将其组合更好,还是将其作为单个页面更好?

javascript - 我如何通过 <li> 标记从 javascript 函数向我的图表动态添加值?

javascript - jQuery Accordion 中的谷歌地图在 jsFiddle 中工作,但在手动调整窗口大小之前 map 不会加载到我的服务器上

javascript - jQuery UI 自动完成功能来自 Facebook Graph API 好友的自定义数据

javascript - 在循环中使用 $.Deferred() 和嵌套的 ajax 调用

css - 使用 Jquery ui 的工具提示文本对齐

javascript - 无法在同一个可放置的react-beautiful-dnd中拖放组件

javascript - React hooks 帮助从基于类的组件进行重构