首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery查找另一个数的下一个/最近的倍数

jquery查找另一个数的下一个/最近的倍数
EN

Stack Overflow用户
提问于 2013-02-20 01:57:43
回答 3查看 709关注 0票数 0

我有一个包含动态生成的行(<tr>’s)的<table>

在每一行中,我有一个特定的单元格(<td>),我在其中显示一个文本框。在该文本框中,我添加了一个自定义data-roundingrule属性,该属性保存一个特定值(在每一行中,数据舍入规则属性可能(也可能不)具有不同的值)。

以下是这些文本框可能的外观的两个示例:

代码语言:javascript
复制
<input type=”text” id=”txt-1” name=”txt-1” data-roundingrule=”2”>
<input type=”text” id=”txt-2” name=”txt-2” data-roundingrule=”13”>

我的目标是在每个textbox上创建一个change事件,以验证(由用户输入的)值是否是存储在data-roundingrule属性中的值的倍数。

如果用户输入的值是data-roundingrule属性的倍数,那就太好了!让事情保持原样,…

如果用户输入的值不是data-roundingrule属性的倍数,那么查找/获取/获取下一个最接近的数字,它将是data-roundingrule属性的倍数。

下面是一个例子:

考虑到上述两个文本框,在文本框1中,用户输入值1。change事件验证值1是否是设置为2的数据舍入规则的倍数。由于不是这样,因此我需要更改用户输入的值并将其设置为2。

对于第二个文本框…也是如此假设用户在文本框中输入值4,4不是13的倍数,因此我需要将用户的输入从4更改为13。

如果用户在第二个文本框中输入值16,则16不是13的倍数,因此我需要将用户的输入从16更改为26 (这是下一个倍数)。

希望这是有意义的…

真诚并提前致谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-20 02:17:15

代码语言:javascript
复制
$('input').change(function () {
    var rr = parseInt($(this).data('roundingrule'), 10);
    if ($(this).val() % rr != 0) $(this).val(Math.ceil($(this).val() / rr) * rr);
});
票数 0
EN

Stack Overflow用户

发布于 2013-02-20 02:13:06

你可以这样做:

代码语言:javascript
复制
$('input').change(function() {
    var round     = parseInt($(this).attr('data-roundingrule'), 10);
    var value     = parseInt($(this).val(), 10);
    var remainder = value % round;

    if(remainder != 0) {
        $(this).val(value + round - remainder);
    }
});
票数 2
EN

Stack Overflow用户

发布于 2013-02-20 02:13:55

添加onchange方法

代码语言:javascript
复制
<input type=”text” id=”txt-2” name=”txt-2” data-roundingrule=”13” onchange="roundUp(this)">

然后用Jquery这样定义函数...

代码语言:javascript
复制
function roundUp(el)
{
  var num = $(this).attr("data-roundingrule");
  num = num * 1 // lazy coercion to numeric type

  var val = $(this).attr(val);

  val = val * 1;
  if(val % num === 0)
  {
    //it's good
  }
  else
  {
    while(val % num !== 0)
    {
      val += 1;
    }
  }  
}

不过,您可能应该添加一些错误检查...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14964231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档