我有一个包含动态生成的行(<tr>’s)的<table>。
在每一行中,我有一个特定的单元格(<td>),我在其中显示一个文本框。在该文本框中,我添加了一个自定义data-roundingrule属性,该属性保存一个特定值(在每一行中,数据舍入规则属性可能(也可能不)具有不同的值)。
以下是这些文本框可能的外观的两个示例:
<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 (这是下一个倍数)。
希望这是有意义的…
真诚并提前致谢!
发布于 2013-02-20 02:17:15
$('input').change(function () {
var rr = parseInt($(this).data('roundingrule'), 10);
if ($(this).val() % rr != 0) $(this).val(Math.ceil($(this).val() / rr) * rr);
});发布于 2013-02-20 02:13:06
你可以这样做:
$('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);
}
});发布于 2013-02-20 02:13:55
添加onchange方法
<input type=”text” id=”txt-2” name=”txt-2” data-roundingrule=”13” onchange="roundUp(this)">然后用Jquery这样定义函数...
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;
}
}
}不过,您可能应该添加一些错误检查...
https://stackoverflow.com/questions/14964231
复制相似问题