2013-01-24 17 views
10

ile para biçimlendirmek için işlev |: Teklif: $ 24000Gidon benim gidon şablonunda bu var javascript

Bunu biçimlendirmek istediğinize virgüllerle ve başarısız oluyorum.

Konsolda çalışan bu işlev var ancak kod çubuklarına gidonlarla uyarlandığında başarısız oluyor.

$.fn.digits = function(){ 
    return this.each(function(){ 
     $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
} 

Ve $ ("span.currencyFormatMe") gibi diyoruz rakam().;

Yine tüm bunlar konsolda çalışır, ancak uyarlandığında başarısız olur. Herhangi bir işaretçiler

bir registerhelper ile denedim çok açıktır:

Handlebars.registerHelper('formatCurrency', 
    $.fn.digits = function(){ 
     return this.each(function(){ 
      $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
     }) 
    } 
); 

çağrılması:

{{formatCurrency _current_price}} 
+0

bir yardımcı benim girişimi yansıtacak bir registerHelper – epascarello

+0

@epascarello güncellenen Yukarıdaki kod kullanarak edilmemelidir .. ..yaşam yok. Dışarıda duran bir şey var mı? – jahrichie

cevap

18

Burada birkaç basit seçenekler vardır.

jQuery eklentinizle yapışabilir ve Handlebars şablonu doldurulduktan sonra uygulayabilirsiniz; Böyle bir şey: o zaman

<script id="t" type="text/x-handlebars"> 
    <span class="currencyFormatMe">{{_current_price}}</span> 
</script> 

ve:

$.fn.digits = function(){ 
    return this.each(function(){ 
     $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); 
    }) 
}; 

var t = Handlebars.compile($('#t').html()); 
var h = t({ 
    _current_price: 1000 
}); 
$('<div>').append(h).find('.currencyFormatMe').digits(); 

Demo: http://jsfiddle.net/ambiguous/732uN/

Veya bir Gidon yardımcı içine eklenti dönüştürmek ve şablonda biçimlendirme yapabilirsiniz. Bunu yapmak istiyorsanız, yardımcının içinde $(this) ile uğraşmak yerine yardımcıya geçirilen değeri biçimlendirmeniz gerekir. Sonra

<script id="t" type="text/x-handlebars"> 
    {{formatCurrency _current_price}} 
</script> 

ve: Örneğin:

Handlebars.registerHelper('formatCurrency', function(value) { 
    return value.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
}); 

var t = Handlebars.compile($('#t').html()); 
var h = t({ 
    _current_price: 1000 
}); 

Demo: http://jsfiddle.net/ambiguous/5b6vh/

+0

Sadece kayıt sorumlusu lazım, bir milyona teşekkürler! – jahrichie

+0

Yukarıdakiler için teşekkürler, ancak örneğin teklif olarak 24000,50 ABD doları tutar. Bu bölüm hakkında herhangi bir tavsiye var mı? – Tai

+0

@TaiHirabayashi ".50" bölümünü mi kastediyorsunuz? Muhtemelen bir 'prinft' JavaScript kitaplığı aramak ve bir Handlebars yardımcı içinde sarın. –