2014-01-26 2 views
0

Ниже приведен код javascript, который принимает только число и точку (.). Но если я напишу 123 ..... 122 Он по-прежнему согласен. В основном я делаю это для проверки поля цены, где пользователь может писать только этот формат.Javascript regex для правильной цены

Desire Формат:

$(currency)12345(amount).(dot only once)123(decimal) 

Javascript Код:

<script type="text/javascript"> 
function validate(evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    key = String.fromCharCode(key); 
    var regex = /[0-9]|\./; 
    if(!regex.test(key)) { 
    theEvent.returnValue = false; 
    if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
} 
</script> 

Html Поле ввода:

<input type='text' onkeypress='validate(event)' /> 

Ho w могу ли я исправить этот код javascript?
Спасибо.

+0

так что вы хотите, чтобы соответствовать, например, '$ 845.47'? – Markasoftware

+0

@Markasoftware Да, это мой валютный формат. – Babu

+0

вы просто проверяете ключ, на который они нажимают. Вам нужно протестировать весь ввод – Markasoftware

ответ

0

Две проблемы с вашим кодом: вы проверяете только нажатие клавиши, а не значение ввода, а регулярное выражение немного перепутано. Вот как это исправить:

JavaScript:

function validate(toValidate){ 
    if(!/^\$\d+(\.\d{0,2})?$/.test(toValidate)) 
     alert('NOOOOO');//or do something else here 
} 

HTML вход:

<input type='text' oninput='validate(this.value)' /> 

jsfiddle

+0

Он не принимает $ (Доллар) и показывает «Nooo», когда набирает число. – Babu

+0

@Babu всякий раз, когда вы вводите ключ, он проверяет его на регулярное выражение. Если он не соответствует, он показывает предупреждение. Введите $, нажмите «ОК», затем введите 5 (теперь нужно сказать 5 долларов), и нет предупреждения, что означает, что он прошел. Я отредактирую скрипку, чтобы сделать ее более полезной. – Markasoftware

+0

Спасибо за ваши усилия. Вы проверили мой загруженный сценарий? Вы можете ввести только значение «Число». Вы не можете ввести алфавитный символ. Таким образом, эта проверка javascript должна быть действительной при вводе пользователя, который соответствует моей строке Format ... – Babu

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