0

日付ピッカーに問題があります。何らかの理由で、最初の読み込み時に日付ピッカーが正常に機能し、日付を選択できますが、(ajax経由で)更新をクリックすると、日付ピッカー領域が更新されますが、日付ピッカーを使用できません。 。とにかく彼らはそれの周りにいますか?

別のIDを使用して古い要素を削除しようとしましたが、あまり成功しませんでした:/

ファイル'datefunction.php'に日付を表​​示する関数がphpにあります

    function getDateInfo()
{
     $date = $_GET['date'];

     $html = '<script> 
        $(document).load(function() {
        $("#dt").datepicker(\'destroy\');
        $("#dt").remove();

        var mydate = $("#dt1").datepicker({ dateFormat: "dd-mm-yy" });
                $("#dt1").click(function(){
                     mydate.datepicker("show");
                     });     
                });
            });</script>
                <label>Date1:</label>
          <input type="text" name="dt"  id="dt1" maxlength="10" size="12" value="' . $date . '" readonly="true" />';

     return $html;
}

echo getDateInfo();

'dates.php'という名前のページが表示されています

<script src="/script/jquery.js" type="text/javascript"></script>
<script type='text/javascript' src='/script/jquery-ui-1.8.9.custom.min.js'></script>
<script type='text/javascript' src='/script/jquery.datePicker.js'></script>
<script>
var bustcachevar=1; //bust potential caching of external pages after initial request? (1=yes, 0=no)
var bustcacheparameter="";

function ajaxpage(url, containerid, requesttype){
    var page_request = false
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
        page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
        try {
            page_request = new ActiveXObject("Msxml2.XMLHTTP")
        } 
        catch (e){
            try{
                page_request = new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e){}
        }
    } else  return false
    page_request.onreadystatechange=function(){
        loadpage(page_request, containerid)
    }

    if (requesttype=='get'){
        if (bustcachevar) bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
        page_request.open('GET', url+bustcacheparameter, true)
        page_request.send(null)
    } else if (requesttype=='post') {
        var poststr = "mytextarea1=" + encodeURI( document.getElementById("mytextarea1").value ) + "&mytextarea2=" + encodeURI( document.getElementById("mytextarea2").value );
        page_request.open('POST', url, true);
        page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        page_request.setRequestHeader("Content-length", parameters.length);
        page_request.setRequestHeader("Connection", "close");
        page_request.send(parameters);
    };
}

function loadpage(page_request, containerid){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    document.getElementById(containerid).innerHTML=page_request.responseText
}
$(document).ready(function() {
                var mydate = $("#dt").datepicker({ dateFormat: "dd-mm-yy" });
                $("#dt").click(function(){
                     mydate.datepicker("show");
                     });     
                });
</script>


<?php 
$date = "05-06-2009";
echo "<div id='datearea'><label>Date:</label>
          <input type='text' name='dt' id='dt' maxlength='10' size='12' value='" . $date . "' readonly='true' /></div>";
echo "<a href='#' onclick='javascript:ajaxpage(\"datefunction.php?date=02-04-1999\", \"datearea\", \"get\");'>update</a>";
?>
4

3 に答える 3

0

これは、ページが読み込まれると、JQueryがすべてのイベントと関数をDOM要素に追加しますが、DOMの要素がAjaxを介して読み込まれると、イベントが追加されないためです。それを機能させるために、私はJQueryのLiveQueryプラグインを使用します。これは、AJAXなどを介してDOMが既にロードされた後にイベントが追加された場合でも、イベントをDOMに追加します。

$("#dt").livequery('click', function(event) { 
    //CODE FOR DATE PICKER 
});
于 2013-01-22T12:18:41.833 に答える
0

これを変更してこの問題を解決する必要があります。

$("#dt").click(function(){

これに:

$("#dt").on('click', function(){

http://api.jquery.com/on/

于 2013-01-22T12:14:29.583 に答える
0

datepicker()は動的に追加された要素を見つけることができないため、ajax成功関数の後にdatepickerを呼び出す必要があります。

$('#yourInoutID').datepicker(); 

また

これを行う

$(document).find('#yourInoutID').datepicker();

アップデート

あなたの場合、それは

 $(document).on('click','#dt',function(){
                 mydate.datepicker("show");
                 });     
            });
于 2013-01-22T12:15:52.870 に答える