Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在输入字段中格式化货币和百分比_Javascript_Jquery_Currency_Percentage - Fatal编程技术网

Javascript 在输入字段中格式化货币和百分比

Javascript 在输入字段中格式化货币和百分比,javascript,jquery,currency,percentage,Javascript,Jquery,Currency,Percentage,我只能在a3中插入“$”符号。我还需要为a1插入“$”符号,但当我像这样为a1字段插入格式时 $('a3').val(格式($('a1').val(格式)*$('a2').val()) 我犯了一个错误。最好的方法是什么 HTML <table class="table"> <tbody> <tr> <td>You</td> <td class="light-g

我只能在a3中插入“$”符号。我还需要为a1插入“$”符号,但当我像这样为a1字段插入格式时

$('a3').val(格式($('a1').val(格式)*$('a2').val())

我犯了一个错误。最好的方法是什么

HTML

<table class="table">
    <tbody>
        <tr>
            <td>You</td>
            <td class="light-gray">Example</td>
        </tr>
        <tr>
            <td width="20%">a1
                <input type="textbox" class="form-control" id="a1" name="a1" />
            </td>
            <td width="20%" class="light-gray">$30,000</td>
        </tr>
        <tr>
            <td>a2
                <input type="text" class="form-control" id="a2" name="a2" />
            </td>
            <td class="light-gray">90%</td>
        </tr>
        <tr>
            <td>a3
                <input type="text" class="form-control" id="a3" name="a3" data-cell="a3" />
            </td>
            <td class="light-gray">$27,000</td>
        </tr>
        <tr class="heading">
            <th colspan="2">&nbsp;</th>
        </tr>
</table>

你
例子
a1
$30,000
a2
90%
a3
$27,000
jQuery

  $(document).ready(function () {

  var format = function (num) {
      var str = num.toString().replace("$", ""),
          parts = false,
          output = [],
          i = 1,
          formatted = null;
      if (str.indexOf(".") > 0) {
          parts = str.split(".");
          str = parts[0];
      }
      str = str.split("").reverse();
      for (var j = 0, len = str.length; j < len; j++) {
          if (str[j] != ",") {
              output.push(str[j]);
              if (i % 3 == 0 && j < (len - 1)) {
                  output.push(",");
              }
              i++;
          }
      }
      formatted = output.reverse().join("");
      return ("$" + formatted + ((parts) ? "." + parts[1].substr(0, 2) : ""));
  };
  $("#a1,#a2").keyup(function (e) {
      $('#a3').val(format($('#a1').val() * $('#a2').val()));
  });
$(文档).ready(函数(){
变量格式=函数(num){
var str=num.toString().replace(“$”,“”),
部分=假,
输出=[],
i=1,
格式化=空;
如果(str.indexOf(“.”)大于0){
零件=str.split(“.”);
str=零件[0];
}
str=str.split(“”.reverse();
对于(var j=0,len=str.length;j
}))


您的问题是,您假设输入中的值是数字。由于使用非数字字符格式化这些字符,因此它们不是(并且不能转换为数字)

由于所乘的值不是数字,因此会抛出错误。

为了能够将这些字符串相乘(或者精确地说是它们所代表的值),您需要先取消字符串的格式化,然后才能将其转换为数字并进行计算

您将在中找到一个工作示例。

顺便说一句:最好使用更改事件进行格式化,而不是使用keyUp事件,因为当用户打算写入输入时,在操作输入时,用户将无法不受干扰地写入输入。更改事件将在输入失去焦点时触发,因此不会干扰用户


我希望这对你有帮助

请包括在问题中。如果你对解决自己的问题不感兴趣,我建议你雇一个程序员。是的,非常有帮助。非常感谢你。此外,我正在尝试为下拉列表添加选择选项,我想知道为什么选项框中没有显示“已选择”选项有任何建议吗?请参见此行为10%90%当您要设置选择的值时,您需要将其设置为其中一个选项的值。。。因此,您可以将其具体设置为“.1”或“.9”,这样就可以了。将“选择”的值设置为所有选项都没有的值(例如“90%”)。因此,不会选择具有空选择视觉效果的选项。要实现您想要的,您不需要该百分比格式化程序,因为您可以通过为选项提供带有未格式化值的格式化标签来手动进行格式化。你没有百分比格式的代码对我有用谢谢!非常有用。
$('#a1').val() * $('#a2').val()