0

シンプルなHTMLコード、JEasyUIでは、DateTimeBoxとTimeSpinnerから実際のJavaScript日付を取得する方法はありますか?

<div class="easyui-datebox" style="width:250px;height:30px;"></div> 
<div class="easyui-calendar" style="width:250px;height:250px;"></div> 
<div class="easyui-timespinner" style="width:250px;height:30px;"></div> 
<div class="easyui-datetimebox" style="width:250px;height:30px;"></div> 

コールバック、彼らが変更されたときのためにそれらの機能は、datebox

function setText(raw, parser) { 
    var date = ''; 
    if(parser) { 
    try{ 
     date = parser(raw); 
    } 
    catch(e) { 
     date = e; 
    } 
    } 

    $('.easyui-textbox').textbox(
    'setText', 
     'Raw: ' + raw + ', Parsed: ' + date + '\n' + $('.easyui-textbox').textbox('getText')); 
} 

$('.easyui-datebox').datebox({ 
    onChange: function(newVal) { 
    setText(newVal, $.fn.datebox.defaults.parser); 
    } 
}); 

$('.easyui-timespinner').timespinner({ 
    onChange: function(newVal) { 
    setText(newVal, $.fn.timespinner.defaults.parser); 
    } 
}); 

$('.easyui-datetimebox').datetimebox({ 
    onChange: function(newVal) { 
    setText(newVal, $.fn.datetimebox.defaults.parser); 
    } 
}); 

$('.easyui-calendar').calendar({ 
    onChange: function(newVal) { 
    setText(newVal); 
    } 
}); 

、その$.fn.datebox.defaults.parser作品calendarと、予想通り、それはあなたのための作業を行い、そして既にコールバックの日付であり、そのcurrentプロパティの日付です。

しかしdatetimebox、およびtimespinnerの両方で、我々はjquery.easyui.min.jsで不明瞭なエラーを取得し、

TypeError: $.data(...) is undefined 

ドキュメントはここに偉大ではない、と私はハンドルを取得するEasyUIの圧縮されていないバージョンを見つけることができませんパーサーで何がうまくいかないのかを正確に調べてください。だから、

、タイトルが行くとして、どのように私は私がCalendarDateBoxで取得することができるよ同じように、EasyUIのDateTimeBox、およびTimeSpinnerから実際の日付を得るのですか?

答えて

0

まだ圧縮されていますが、両方のソースを見ると、問題の内容がわかります。何らかの理由で(私はそれがバグだと推測しています)、DateTimeBoxTimeSpinnerの両方のパーサーは、適切なコンテキストでは「static」の方法で関数を呼び出している$(this)のコードを使用します。$.fn.datetimebox.defaults.parser(...)thisコンテキストはが間違っていますthis、それは一般的なJavascriptオブジェクトであり、期待しているオブジェクトはHTML DOMではありません。

var _bd1=$(this).datetimebox("spinner").timespinner("options").separator; 

var opts=$(this).timespinner("options"); 

問題の線です。

これを回避するには、呼び出された関数のコンテキストを設定できるように、JavaScriptのcallメソッドアクセサを使用する必要があります。

ので

、代わりの の$ .fn.datetimebox.defaults.parser(newValに)

$.fn.datetimebox.defaults.parser.call(this, newVal) 

、代わりの の$ .fn.timespinner.defaults.parser(newValに)

$.fn.timespinner.defaults.parser.call(this, newVal) 

このようにして、内部関数がthisにアクセスすると、あなたはそれらに渡されたthisを使用しています。

私にはこれはまだ面倒なようで、私の腸はこれを行うには別の、より良い方法がなければならないと言われますが、私は確かにすることができ、今

https://jsfiddle.net/7pm89dp7/1/

、中にそれらの変更をJSFiddle例を更新しました1つを見つける!

関連する問題