【问题标题】:Restrict User To Enter Same range of values against a particular type限制用户针对特定类型输入相同范围的值
【发布时间】:2022-01-16 04:15:36
【问题描述】:

我有一个动态网格,用户可以在其中添加任意数量的行。在添加行时,他将选择一种类型,并针对该类型输入最小值和最大值。

     Type    Minimum Value  MaximumValue   AddRow
      ABC        12            13          (icon)
      XYZ        12            13          (icon)
      ABC        12            13          (icon)

这是一个例子。用户选择类型 ABC 并输入范围。在第二行中,用户选择了不同的类型并输入了范围。在第三行中,用户选择了一种类型并输入了与第一行相同的范围。同一类型不能再次具有相同的范围。此外,也不应该有重叠。因此,在保存时,如果用户之前已经输入过一次,我想做一些事情来限制用户不要输入与该类型相同的范围。我很困惑,我该怎么做?

到目前为止,这就是我为验证所做的工作。

                if (map.has(CustomerTypeCode)) {
                    var obj = map.get(CustomerTypeCode);
                    if (minVal >= obj.minVal && maxVal <= obj.maxVal) {
                        alert("Duplicate Ranges Found!");
                    }
                } else {
                map.set(type, {
                    minVal: minVal,
                    maxVal: maxVal
                  })
                }



 
    

【问题讨论】:

  • @Andrew Myres 你能帮忙吗?

标签: javascript html jquery arrays asp.net


【解决方案1】:

你可以使用Map来实现你想要的。

//You must declare your map at global scope or outer scope of this operation 
//so that you don't create new map every time
const map = new Map();

let minVal = $(this).find("td:eq(3)").find("input").val();
let maxVal = $(this).find("td:eq(4)").find("input").val();
// I don't know your html so I assume you can get selected type
let type = "ABC";
if (map.has(type)) {
  let obj = map.get(type);
  if (minVal >= obj.minVal && maxVal <= obj.maxVal) {
    alert("Duplicate Ranges Found!");
  }
} else {
  map.set(type, {
    minVal: minVal,
    maxVal: maxVal
  })
}

【讨论】:

  • 嗨,让我试试看这是否有效。这也将防止重叠? @Burhan Savci
  • 是的,它还会检查您在问题中提到的重叠值。
  • 我的代码不支持这个 const 变量。还有其他选择吗?
  • 当你说我的代码不支持它时,我不太明白你的意思。但是,在 JS 中,您可以将变量定义为 varletconst。您可以使用其中一种
  • 它给了我地图是未定义的。你能帮忙吗?
猜你喜欢
  • 1970-01-01
  • 2014-11-07
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
相关资源
最近更新 更多