如何在Javascript / Python / Django中为数字添加千位分隔符

时间:2020-06-11 06:12:44

标签: javascript python django

我想问一下如何在输入数字和输出时在数字上添加千位分隔符。

例如1万变成10,000。

我尝试使用Django intcomma,但无法正常工作。

真的很感谢你们能帮助我。下面是我的代码:

HTML

<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>

<body>
  <div class="container">
    <br />
    <br />
    <div class="form-group">
      <form name="add_price" id="add_price">
        <div class="table-responsive">
          <table class="table table-bordered" id="price">
            {{ priceformset.management_form }}
            {% for price in priceformset %} 
            <tr>
              <td>{{ product.product_price }}</td>
              <td>{{ product.product_quantity }}</td>

              <td>{{ product.product_total_price }}</td>
            </tr>
            {% endfor %}
          </table>
          <input type="button" name="submit" id="submit" class="btn btn-info" value="Submit" />
        </div>
      </form>
    </div>
  </div>
</body

JavaScript

$('.textInput').on('change keyup', function() {

      product_total_price=0;

      var product_price= Number($('#id_Product-0-price').val());
      var product_quantity= Number($('#id_Product-0-quantity').val());

      product_total_price= product_price * product_quantity;
      $('#id_Product-0-total_price').val(product_total_price);

});

Models.py

 class Price (models.Model):
    product_price = models.CharField(max_length=512,null=True,blank=True)
    product_quantity = models.CharField(max_length=512,null=True,blank=True)
    product_total_price= models.CharField(max_length=512,null=True,blank=True)

Forms.py

class PriceForm(forms.ModelForm):

product_price =forms.CharField(required=False,label=('Price'),widget=forms.TextInput(
        attrs= {
        "class":"textInput form-control",
        "placeholder" : "Price"
}))

product_quantity =forms.CharField(required=False,label=('Quantity'),widget=forms.TextInput(
        attrs= {
        "class":"textInput form-control",
        "placeholder" : "Quantity"
}))

product_total_price =forms.CharField(required=False,label=('Total Price'),widget=forms.TextInput(
        attrs= {
        "class":"textInput form-control",
        "placeholder" : "Total Price"
}))

class Meta:
        model = Price
        fields = ('__all__')

3 个答案:

答案 0 :(得分:3)

javascript:

const n = 100000
const formated = n.toLocaleString()

python(需要python 3.6及更高版本):

n = 1000000
formatted = f'{n:,}'

答案 1 :(得分:1)

在js中很容易做到:

let number = 1000
number.toLocaleString()

这是在python中执行的方法:

def place_value(number): 
    return ("{:,}".format(number)) 

print(place_value(1000000)) 

很乐意提供帮助

答案 2 :(得分:-1)

它也适用于浮点型淡水河谷。这有点复杂,但我真的很喜欢分享我的想法。它基于 Javascript。

value.toString().split('.').map((v, i) => i===0?v.split('').map((val, idx, self) => ((idx===0)||((self.length-idx)%3!==0))?val:`,${val}`).join(''):v).join('.')