1
我有2個輸入字段,長度和寬度。我正在使用實時驗證和計算而沒有提交按鈕。我被困在1個問題上,當我輸入長度「len」它立即驗證寬度以及。或者如果我首先輸入寬度,它也驗證len。我希望他們僅在輸入特定字段時進行驗證。JavaScript oninput驗證1一次
對於len和width輸入文本字段,我在HTML中都有ininput =「Validate()」。所以oninput for len在用戶甚至嘗試輸入寬度之前自動檢查寬度驗證。
無論如何,只有1驗證失敗後打破或停止,所以他們都不是總是驗證?或者我需要使用2個獨立的函數進行oninput?
當兩個驗證都通過時,我需要將變量傳遞給Calculate(len,width);進行最後的計算和顯示。
function Validate()
{
// user input
var len = parseFloat(document.getElementById("len").value);
var width = parseFloat(document.getElementById("width").value);
var lenValid;
var widthValid;
// validate
if (isNaN(len) || len <= 0 || len > 1000)
{
document.getElementById("len_error").innerHTML = "<br>" + "Must be between 0 and 1000";
document.getElementById("len").focus();
lenValid = false;
}
else
{
document.getElementById("len_error").innerHTML = "";
lenValid = true;
}
if (isNaN(width) || width <= 0 || width > 1000)
{
document.getElementById("width_error").innerHTML = "<br>" + "Must be between 0 and 1000";
document.getElementById("width").focus();
widthValid = false;
}
else
{
document.getElementById("width_error").innerHTML = "";
widthValid = true;
}
// process calculations
if (lenValid && widthValid)
Calculate(len, width);
}
這似乎不正確。當輸入數字時,放置!isNaN(len)將顯示驗證錯誤消息,並且它允許字母通過驗證。改變我的最後一個陳述給你的建議也沒有幫助。 – Programmer7
我爲什麼要那樣做?放!isNaN(len)只允許字母通過驗證。您使用數字而不是字母來計算面積(長度*寬度)。 – Programmer7
您的更新版本更接近但仍有問題。如果我爲len輸入1個數字,比如2個數字,它會立即跳轉到驗證寬度而不讓我再輸入數字,就像我想要2是21還是210.它似乎仍然在驗證寬度, LEN。 – Programmer7