Javascript 如果值超过最大值,则验证内部输入
我有一个数据表,我在ASP.NET MVC中使用C#在razor视图中呈现 为了给我的目标做一个简短的例子,让我们以这个表格为例Javascript 如果值超过最大值,则验证内部输入,javascript,c#,html,asp.net-mvc,Javascript,C#,Html,Asp.net Mvc,我有一个数据表,我在ASP.NET MVC中使用C#在razor视图中呈现 为了给我的目标做一个简短的例子,让我们以这个表格为例 函数setValueAttr(el){ el.setAttribute('value',el.value) } 函数aplicar(){ var myTab=document.queryselectoral('tableID tbody tr.txtID:not([value=”“]); var tableData=[]; Array.from(myTab.forE
函数setValueAttr(el){
el.setAttribute('value',el.value)
}
函数aplicar(){
var myTab=document.queryselectoral('tableID tbody tr.txtID:not([value=”“]);
var tableData=[];
Array.from(myTab.forEach)(输入=>{
var tds=输入。最近('tr')。子项;
var obj={};
obj.A=tds[0].textContent;
obj.B=tds[1].textContent;
obj.C=tds[2].textContent;
obj.D=tds[3]。文本内容;
obj.E=输入值;
tableData.push(obj);
});
console.log(tableData);
}
A.
B
C
D
E
瓦尔1
瓦尔2
val3
1500
瓦尔1
瓦尔2
val3
1500
瓦尔1
瓦尔2
val3
1500
Aplicar
您可以在脚本函数中添加一个简单的附加项来检查max。我认为,除非您使用观察器,否则您必须在javasctipt中进行检查
function aplicar() {
var myTab = document.querySelectorAll('#tableID tbody tr .txtID:not([value=""])');
var tableData = [];
Array.from(myTab).forEach(input => {
var tds = input.closest('tr').children;
var obj = {};
obj.A = tds[0].textContent;
obj.B = tds[1].textContent;
obj.C = tds[2].textContent;
obj.D = tds[3].textContent;
if(input.value > MAX)
{
input.value = MAX;
}
obj.E = input.value;
tableData.push(obj);
});
console.log(tableData);
}
使用javascript设置属性值很可能会绕过输入元素的验证机制。为什么要使用javascript设置value元素?值属性是通过在输入元素中自己键入值来填充的。添加了此属性
var myTab = document.querySelectorAll('#tableID tbody tr .txtID:not([value=""]):valid');
它修复了它,非常感谢大家,特别是@HereticMonkey解决了这个问题我如何将javascript变量MAX指向我的html值?你可以创建一个字典,其中键是输入的id,值是你的最大值。这样,每个输入都可以有单独的最大值。
max
属性不会阻止您手动设置超过最大值的值;它只是将输入标记为无效。如果将传递给querySelectorAll
的选择器更改为在末尾包含:valid
,并在所有字段中输入max
以上的值,它将返回一个空数组。要添加的语法是什么:在querySelectorAll末尾有效,只需将其添加到选择器的末尾:document.querySelectorAll(“#tableID tbody tr.txtID:not([value=”“]):valid”)代码>成功了,顺便问一下,你能链接我吗?我在哪里可以学会像你编辑我的文章一样使用“运行代码片段”并在你的评论中添加代码背景?另外,谢谢你的回答