簡體   English   中英

如何在jquery UI datepicker中創建日期范圍,而又不在主datepicker函數中再次調用datepicker?

[英]How to create a date range in jquery UI datepicker without calling datepicker again inside the main datepicker function?

選擇范圍時,jquery UI datepicker有一個奇怪的問題。 在提出問題之前,我正在研究許多其他人編寫的代碼。 它們以優化的順序包括了jquery工具和UI,因此所有功能都可以使用。 除jquery UI外的所有內容。 我提到的原因是,我無法更新版本或切換庫的順序,因為它破壞了所有其他代碼:((但我確保jquery,js,jquery UI不會在任何地方包含兩次)

就是說,問題是這樣的-我想有兩個日期,其中“到”日期應該晚於“從”日期。 使用來自jquery網站的以下代碼,這應該很容易:

$(function() {
    $( "#from" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            $( "#to" ).datepicker( "option", "minDate", selectedDate ); //BREAKS!
        }
    });
    $( "#to" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            $( "#from" ).datepicker( "option", "maxDate", selectedDate ); //BREAKS!
        }
    });
});

問題是當我在注釋為“ BREAK!”的行中選擇日期時,代碼中斷。 它只是沒有檢測到主datepicker函數內部的第二個datepicker並給我錯誤-SCRIPT438:對象不支持屬性或方法“ datepicker”

因此,我閱讀了以下帖子,並決定按照以下方式進行操作。 這有效,但顯然我現在沒有范圍功能。

$(document).ready(function(){

$('#from').datepicker({
            changeMonth: true,
            changeYear: true,
            numberOfMonths: 1,
            showButtonPanel: true,
    onSelect: function(dateText, inst) { 
    $('[name=wmFrom]').val(dateText); //need this part for the search filters
    }

});
 $('#to').datepicker({
            changeMonth: true,
            changeYear: true,
            numberOfMonths: 1,
            showButtonPanel: true,
    onSelect: function(dateText, inst){ 
    $('[name=wmTo]').val(dateText); //need this part for the search filters
    }       
});
});

好的,現在我仍在學習js和jquery。 誰能幫我實現范圍功能,而無需在datepicker中調用/初始化datepicker。 我知道這個問題可能意味着庫的版本或兼容性可能存在問題。 但是就像我說的那樣,我真的不能擺脫它們或對此做出很大的改變。 任何想法/幫助將不勝感激。


更多信息-

令人沮喪的是,在我之前工作的某人以這種方式做事,而我所做的任何更改都破壞了功能。 這是一個內部應用程序,因此無法提供鏈接:(。

這就是我在說的-首先,有一個標頭php包含在我正在處理的問題文件的頂部。 該頭具有指向jquery庫的鏈接。 包含header.php之后,有指向queryLoader.js,jquery.easing.1.3.js的鏈接。 然后是一堆包含腳本和正文html的代碼(這是與datepicker關聯的html輸入所在的位置)。 然后,它們鏈接/full/jquery.tools.min.js,jquery.effects.core.js,jquery.ui.core.js,jquery.ui.widget.js,jquery.ui.datepicker,query.ui.tooltip。 js,jquery-ui.css。 此后,還有更多腳本使用$ .tools.validator.fn和serializeObject()之類的功能。

如果我假設兩次加載jquery lib,並將/full/jquery.tools.min.js更改為/tiny/jquery.tools.min.js或/all/jquery.tools.min.js,則會收到以下錯誤:對象在具有諸如serializeObject()之類的函數的行上不支持此屬性或方法。 當頁面加載時,我得到了這個。

如果在所有UI類鏈接之后添加/jquery.tools.min.js,則會得到:對象在輸入的日期選擇器初始化時不支持屬性或方法“日期選擇器”。 當頁面加載時,我得到了這個。

我該怎么辦:(

我會在4年后為您提供幫助:)

$(document).ready(function(){
  //datapickerer creation... $('#to').datepicker({...

  $("#to").on( "change", function() { 
            $("#from").datepicker("option", "maxDate", getDate( this ));
  });
  $("#from").on( "change", function() { 
            $("#to").datepicker("option", "minDate", getDate( this ));
  });
});

jQuery工具的一個常見問題是它們的版本在其插件文件中包含完整的jQuery.js。 如果在其他插件之后加載jQuery工具,則可能導致問題。 插件在其文件中包含完整的jQuery庫是一種可怕的做法。但是jQuery工具團隊認為這很棒。 檢查您用作開始的版本。

本質上,問題可能歸結為用戶沒有意識到jQuery被兩次加載。 在另一個已經注冊了插件的版本上加載jQuery將清除這些插件。

使用瀏覽器控制台檢查拋出的錯誤以幫助您進行故障排除

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM