2016-02-27 2 views
0

Я работаю в лаборатории для школы, и цель состоит в том, чтобы создать веб-элемент управления, который будет принимать только денежное значение от пользователя.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 
+0

Как и в сторону, .charAt (1) проще, чем .substring (1,2). Кроме того, вы можете протестировать весь ввод сразу, используя регулярное выражение, что-то вроде '/^-? \ $ \ D + (\. \ D \ d)? $ /' – nnnnnn

+0

Это будет очень удобно в какой-то момент, я конечно, спасибо. –

ответ

0

Используйте Regex объект:

 (/^-?\$\d+\.\d{2}$/).test(inputString) 

/^ определить начало рисунка в начале строки

-? 1 опционально -

\ $ 1 $ обязательные

\ D + 1 или более цифр

. обязательным.

\ д {2} ровно 2 цифры

$/обязательный конец строки

+0

Отлично подходит для проверки правильности, спасибо. Однако есть ли способ проверить каждый символ, поскольку он добавлен в строку (E.G onKeyup), чтобы проверить, действительно ли он соответствует этому объекту Regex? Если нет, можно ли его автоматически удалить? –

Смежные вопросы