输入数字-最大约束验证不起作用

时间:2019-01-14 11:28:17

标签: javascript html validation input

我有一个输入字段@echo off :label setlocal enabledelayedexpansion set "source=C:\Users\smorheng\Desktop\1\" set "dest=D:\destination\folder" set /a cnt=0 for /f "tokens=*" %%a in ('dir /S /B /A-D "%source%*.pdf"') do for /f "tokens=*" %%b in ('dir /B "%%a"') do if exist "%dest%\%%b" ( set "ext=%%~xa" set "fname=%%~na" if exist "%dest%\!fname!(!cnt!)!ext!" (set /a cnt=!cnt!+1) set /a cnt=!cnt!+1 echo move "%%a" "%dest%\!fname!(!cnt!)!ext!" ) else echo move "%%a" "%dest%\%%b" endlocal timeout 6>nul goto :label ,您可以在下面的代码段中看到它,这似乎可行,但是有一个错误。

当您插入89时,它会工作并返回应有的最大值。

但是,如果第一个数字在7以下,则该数字不起作用(69以下的任何数字)。它仅比较第一个数字,而不比较最后一个数字。

如何正确使用它?

谢谢!

number

3 个答案:

答案 0 :(得分:2)

也许在比较之前将值转换为整数 像这样:

   <input type="number" name="teste" id="teste" value="0" min="0" max="7" onchange="javascript: if (parseInt(this.value) > this.max) this.value = this.max;" />

答案 1 :(得分:0)

HTML属性只能包含文本(不能包含其他类型),因此您正在做lexicographical order。请比较:

console.log("27" > "7");
console.log(27 > 7);

由于按字母顺序对数字进行排序不是很有用,因此您可以extract numbers from strings

console.log("27", typeof "27");
console.log(parseInt("27", 10), typeof parseInt("27", 10));

现在,在大多数情况下,第二个参数(基数或基数)应该默认为10,但设置时应明确避免出现意外情况。

答案 2 :(得分:0)

考虑代码:if (this.value > this.max) this.value = this.max;

在函数中,使用 input max 的值并将其作为文本(或字符串数​​据类型)进行比较。您的意图是比较数字。该示例执行以下操作:

HTML:

<body>

    Result: <p id="result">0</p>

    <input type="number" name="teste" id="teste" 
           value="0" min="0" max="7" 
           onchange="test(this)" />

    <script src="test.js"></script>

</body>


test.js:

function test(elmnt) {

    console.log(typeof elmnt.value); // this returns "string"
    console.log(typeof elmnt.max);   // this returns "string"

    // convert string numbers to integer numbers
    let intVal = parseInt(elmnt.value);
    let maxInt = parseInt(elmnt.max);

    console.log("Input: " + intVal);

    if (intVal > maxInt) {
        intVal = maxInt;
    }

    console.log("Result: " + intVal);
    document.getElementById("result").innerHTML = intVal;
}