2016-10-03 29 views
1

從我所看到的例子,包括像這樣的一個JQuery的日期選擇器中不顯示上的刷新

jQuery Datepicker - refresh pickable days based on selected option

此代碼應工作。

這裏是我打電話給我的外部jQuery的腳本

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
<script src="//code.jquery.com/ui/1.12.0/jquery-ui.js"></script> 

我會注意到在它的問題我使用的是自舉的主題,但不必舉日期選擇器加載的情況下。

當我加載頁面日期選擇器加載罰款使用下面的代碼。 (我會注意到我使用的是jQuery的變化事件,但交換我的代碼的情況下,上面的回答更匹配它小東西我失蹤

$(function(ready){ 
    $(function() { 
     $('#datepicker').datepicker({ 
     format: "mm/dd/yy", 
     minDate: "+2W", 
     maxDate: "+6W" 
     }); 
    }); 
}); 

HTML

<input type="radio" onchange="loadDatePicker()" tabindex="7" class="change" id="radio_1" name="freq" value="1"> Monthly <input type="radio" onchange="loadDatePicker()" tabindex="8" id="radio_2" class="change" name="freq" value="2"> Bi-Weekly 

    <input class="form-control" tabindex="9" onkeyup="slashfunc(this.id)" onchange="datefunc(this.id)" type="text" id="datepicker" value="{{date}}"> 

的輸出HTML是如下:

<input class="form-control hasDatepicker" tabindex="9" onkeyup="slashfunc(this.id)" onchange="datefunc(this.id)" type="text" id="datepicker" value=""> 

然後我點擊我的單選按鈕和下面的代碼被稱爲

function loadDatePicker(){ 
    console.log("test") 
    $('#datepicker').datepicker("destroy"); 
    if($("input[type='radio'][name='freq']:checked").val() == 1){ 
     $('#datepicker').datepicker({ 
     format: "mm/dd/yy", 
     minDate: "+2W", 
     maxDate: "+6W" 
     }); 
    }else if($("input[type='radio'][name='freq']:checked").val() == 2){ 
     $('#datepicker').datepicker({ 
     format: "mm/dd/yy", 
     minDate: "+2W", 
     maxDate: "+2W10D" 
     }); 
    } 
    $('#datepicker').datepicker("refresh"); 
    } 

我可以看到第二個輸入的變化,但它很快又回到

<input class="form-control hasDatepicker" tabindex="9" onkeyup="slashfunc(this.id)" onchange="datefunc(this.id)" type="text" id="datepicker" value=""> 

不過,現在的日期選擇器不再被點擊的日期選擇器輸入時出現。

+1

datepicker消失的唯一可能原因是$('#datepicker')。datepicker(「destroy」);'。你確定你的複選框值沒有被其他地方操縱嗎?我在這裏試過你的代碼:http://jsfiddle.net/rvaldez/D4AGz/並且它按預期運行。 – Runcorn

+0

@Runcorn我發現是什麼導致了這個問題。如果您有任何洞察,爲什麼這是一個問題,我很想知道它是什麼。 – StevenDStanton

回答

0

我終於解決了這個問題。

這是一段修改DOM的外部代碼。

聊天腳本的一部分我正在爲相同的解決方案工作,其中包括下面的代碼行導致它。 (I註釋行,直到我發現哪些被打破它)

jQuery(document).ready(function($) { 
$("body").append('<div id="chat" title="Basic chat"><div id="chats">Please Enter your Name: <input id="username" type="text" ></div></div>'); 
$("body").append('<div id="chat2" title="Basic chat"><div id="chatc"> </div><div id="chate"><input id="chatb" type="text" ></div></div>'); 
}); 

出於某種原因,系統反對這種線在日期選擇器最初聲明之間,並在那裏被修改。

我將整個聊天代碼庫移動到日期選擇器代碼上方並且位於jquery-ui庫上方,並且這一切都像魔法一樣開始工作。