Я работаю в лаборатории для школы, и цель состоит в том, чтобы создать веб-элемент управления, который будет принимать только денежное значение от пользователя.auto удалить новые символы javascript
Rules:
1st digit must be “-“ or “$”
2nd digit must be “$” or a number
3rd digit on must be a number or a “.”
Only two digits after decimal
Must have a “$”
Проблема у меня, что в то время как я могу настроить ярлыки для отображения, когда что-то или не допускается, я не могу понять, как получить его автоматического удаления новых символов при выполнении условий не были выполнены. (E.G. не может ввести «-1», только «- $» или «$ 1».) Попытка установить длину подстроки не работает. Условие в текущем примере также работает только тогда, когда строка состоит только из «-». Любые добавленные дополнительные символы не запускают его.
Код:
function text2money(e) {
// get value of txt
var str = document.getElementById("<%=txt.ClientID %>").value;
if (str.substring(0, str.length) === "-" && str.substring(1, str.length) !== "$") {
str.length = 2;
}
// goes through string one character at a time, converts them to char, then checks if char is a decimal digit
if (str.substring(0, 1) === ('-') || str.substring(0, 1) === ('$')) {
document.getElementById("<%= lbl1.ClientID %>").innerHTML = "True"; // must use .innerHTML with labels
// check if second digit is '$' or numeric
if (str.substring(1, 2) === ("$") || isFinite(str.substring(1, 2))) {
document.getElementById("<%= lbl1.ClientID %>").innerHTML = "It's numeric";
// check if third and any future characters are '.' or numeric
} // end second char if
else {
document.getElementById("<%= lbl1.ClientID %>").innerHTML = "Second char must be '$' or numeric";
} // end second char
} // end first char if
else {
document.getElementById("<%= lbl1.ClientID %>").innerHTML = "First character must be '-' or '$'";
} // end first char
// check if $ is included anywhere in the string
var result = str.indexOf("$") <= -1; // -1 == false
if (result) {
document.getElementById("<%= lbl2.ClientID %>").innerHTML = "$ is a required character";
}
else {
document.getElementById("<%= lbl2.ClientID %>").innerHTML = "";
}
} // end text2money
Как и в сторону, .charAt (1) проще, чем .substring (1,2). Кроме того, вы можете протестировать весь ввод сразу, используя регулярное выражение, что-то вроде '/^-? \ $ \ D + (\. \ D \ d)? $ /' – nnnnnn
Это будет очень удобно в какой-то момент, я конечно, спасибо. –