javascript - 检查数字/值在输入中是否按升序排列(jquery)

标签 javascript jquery

我的表单中有 n 个值输入字段。我需要检查值是否按升序排列,否则会产生错误。

由于数字可以通过多种方式插入,所以我事先做了一个小的“清理”。

可能的输入是:

100.000
100000
100000,00
100.000,00

所有输入均有效且相同。我当前的 JS 看起来像这样:

我输入字段中的 ID 遵循以下模式:staff_u1, staff_u2, ...

for (var i = 1; i <= n; i++) {
    if (($("#staff_u"+(i+1)).length > 0 && !$("#staff_u"+(i+1)).val() != NaN) && parseFloat($("#staff_u"+i).val().replace(',','.').replace(' ','')) < parseFloat($("#staff_u"+(i+1)).val().replace(',','.').replace(' ',''))) {
        console.log("Not in ascending order");
    }
}

从一开始,给出了3 个输入字段。我认为在字段中没有值也会产生不良行为。

举例说明什么是有效的,什么不是:

1. --> 200000,00
2. --> 300000,00
3. --> 250000     
================
not valid, since the 2nd value is > 3rd

1. --> 15000
2. --> 25000
3. --> 35000
================
valid

1. --> 7.500,00
2. --> 12000
3. --> 15.000
4. --> '' (empty input, doesn't mean 0, should not be taken into the comparison)
================
valid, ascending, even though differently formatted

这是向用户显示的默认掩码,即使没有预填充值也是如此。只有 € 值对比较很重要。我认为我当前的解决方案崩溃了,因为第三个值是空的。

Default mask

最佳答案

您可以通过过滤数组、获取数字并检查每个值与其前身来采用嵌套方法。

function getNumber(s) {
    return +s.replace(/\./g, '').replace(/,/, '.');
}

function check(array) {
    return array
        .filter(Boolean)
        .map(getNumber)
        .every((v, i, a) => !i || a[i - 1] < v);
}

var arrays = [
        ['100.000', '80.000', '90.000'],      // false
        ['200000,00', '300000,00', '250000'], // false
        ['15000', '25000', '35000'],          // true
        ['7.500,00', '12000', '15.000', '']   // true
    ];

console.log(arrays.map(check));

关于javascript - 检查数字/值在输入中是否按升序排列(jquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53536503/

相关文章:

javascript - 为什么在计划开始新的一个月后月份开始增加?

javascript - 编译时强制 Typescript 使用箭头函数

javascript - 从表单输入创建多维关联数组

javascript - Framework7 和单页应用程序 : preload all pages

javascript - 从服务获取数据后如何刷新数据表内联编辑器?

javascript - 在ajax过程中加载图像无法正常工作

jquery - 如何在特定的 ajax 调用上调用 .ajaxStart()

javascript - setTimeout回调函数不起作用

Javascript onclick 事件不起作用

javascript - 如何告诉 Protractor 忽略特定的异步 Angular 任务?