jQuery调用未定义的Globalize.format函数

jQuery调用未定义的Globalize.format函数

问题描述:

我试图让全球化与jQuery中的微调控件一起工作。我的代码包括被排序为这样:jQuery调用未定义的Globalize.format函数

<script type='text/javascript' src='/js/jquery-2.0.3.min.js'></script> 
<script type='text/javascript' src='/js/jquery-migrate-1.2.1.min.js'></script> 
<script type='text/javascript' src='/css/jquery/jquery-ui.js'></script> 

<script type='text/javascript' src="/resources/js/cldr.js"></script> 
<script type='text/javascript' src="/resources/js/cldr/event.js"></script> 
<script type='text/javascript' src="/resources/js/cldr/supplemental.js></script> 

<script type='text/javascript' src="/resources/js/globalize.js"></script> 

<script type='text/javascript' src="/resources/js/globalize/message.js"></script> 
<script type='text/javascript' src="/resources/js/globalize/number.js"></script> 
<script type='text/javascript' src="/resources/js/globalize/plural.js"></script> 
<script type='text/javascript' src="/resources/js/globalize/date.js"></script> 

<script type='text/javascript' src="/resources/js/globalize/currency.js"></script> 
<script type='text/javascript' src='js/index.js'></script> 

我尝试加载CLDR东西,如他们的文件说之后,我经过每一个旋转的容器,并根据输入的名义申请的微调控件:

$.when(
    $.get("/resources/js/cldr/main/en/numbers.json"), 
    $.get("/resources/js/cldr/main/en/currencies.json"), 
    $.get("/resources/js/cldr/supplemental/likelySubtags.json"), 
    $.get("/resources/js/cldr/supplemental/numberingSystems.json"), 
    $.get("/resources/js/cldr/supplemental/ordinals.json"), 
    $.get("/resources/js/cldr/supplemental/plurals.json") 
).then(function() { 

    // Normalize $.get results, we only need the JSON, not the request statuses. 
    return [].slice.apply(arguments, [ 0 ]).map(function(result) { 
     return result[ 0 ]; 
    }); 

}).then(Globalize.load).then(function() { 

    /** 
     Add a spinner to each spinner class 
    */ 
    $(".spinner").each(function() { 

     var $S = $(this).children("input"); 
     var name = $(this).attr("name"); 

     switch (name) { 

      case "one-count": 

       $S.spinner({ 
        min: 0, 
        step: 1, 
        start: 0 
       }); 

      break; 

      case "currency-1k-count": 

       $S.spinner({ 
        min: 0, 
        step: 1000, 
        start: 0, 
        numberFormat: "C" 
       }); 

      break; 
     } 
    }); 
}); 

当我包括微调控件的属性部分的NUMBERFORMAT和去点击页面上的微调,它抛出一个错误说:

Uncaught TypeError: Globalize.format is not a function jquery-ui.js(line:12778) 

我去TH e jquery-ui.js文件在12778行,我发现它正在调用Globalize.format。所以我进入我的Globalize.js文件,并没有函数称为格式...什么给?

+0

而且Globalize.parseFloat是不确定的为好。为什么jQuery调用这些函数,如果它们不存在? –

来自版本1.x的全球化库,没有用于格式化所有模块中的数字的格式化函数,但是它是否具有特定货币模块currencyFormatter中的每个模块的方法。我看的解决方案是:

var locale = 'es-CO'; 
 

 
$.when(
 
    $.getJSON(window.Misc.urlFull("cldr/supplemental/likelySubtags.json")), 
 
    $.getJSON(window.Misc.urlFull("cldr/main/"+ locale +"/numbers.json")), 
 
    $.getJSON(window.Misc.urlFull("cldr/supplemental/numberingSystems.json")), 
 
    $.getJSON(window.Misc.urlFull("cldr/supplemental/plurals.json")), 
 
    $.getJSON(window.Misc.urlFull("cldr/supplemental/ordinals.json")), 
 
    $.getJSON(window.Misc.urlFull("cldr/main/"+ locale +"/currencies.json")), 
 
    $.getJSON(window.Misc.urlFull("cldr/supplemental/currencyData.json")) 
 
).then(function() { 
 

 
    // Normalize $.get results, we only need the JSON, not the request statuses. 
 
    return [].slice.apply(arguments, [ 0 ]).map(function(result) { 
 
    return result[ 0 ]; 
 
    }); 
 

 
}).then(Globalize.load).then(function() { 
 

 
    Globalize.locale(locale); 
 

 
    $.widget("ui.sspinner", $.ui.spinner, { 
 
    _parse: function(val) { 
 
     if (typeof val === "string" && val !== "") { 
 
     val = window.Globalize && this.options.numberFormat ? 
 
      Globalize.numberParser({ maximumFractionDigits : 10 })(val) : +val; 
 
     } 
 
     return val === "" || isNaN(val) ? null : val; 
 
    }, 
 

 
    _format: function(value) { 
 
     if (value === "") { 
 
     return ""; 
 
     } 
 

 
     if(window.Globalize && this.options.numberFormat){ 
 

 
     this.options.currency || (this.options.currency = 'COP'); 
 

 
     switch(this.options.numberFormat) { 
 
      case 'C': return Globalize(this.options.culture).formatCurrency(value, this.options.currency); break; 
 
      default: return Globalize(this.options.culture).formatNumber(value); break; 
 
     } 
 
     } 
 
    } 
 
    }); 
 
    
 
    
 
    var config = { 
 
    '.spinner-currency' : { 
 
     step: 5, 
 
     start: 1000, 
 
     min: 0, 
 
     numberFormat: "C", 
 
     culture: 'es-CO', 
 
     currency: 'COP' 
 
    }, 
 
    '.spinner-quantity': { 
 
     step: 1, 
 
     start: 1, 
 
     min: 0 
 
    } 
 
    }; 
 

 
    for (var selector in config) { 
 

 
    $(selector).each(function(index, el) { 
 
     var $el = $(el); 
 
     var spinner = {}; 
 

 
     if(!$el.sspinner("instance")){ 
 
     spinner = $el.sspinner(config[selector]); 
 

 
     if($el.val() == '') 
 
      spinner.sspinner("value", 0); 
 
     } 
 
    }); 
 
    } 
 
});

你得到了错误,因为你有其他jQuery conflict。所以检查哪个JS导致的问题。如果您发现js添加jQuery.noConflict();可解决您的问题。

+0

无论哪种方式都没有格式的功能。所以对这个功能的调用无论如何都会发生爆炸 –