2009-04-07 2 views
1

I; м пытаясь лет реализовать функцию Javacript, которая не позволит пользователю вводить что-либо другое, чем числа с плавающей точкой (цифры)позволяют только цифры для входов

Это мой подход, но я не знаю, как улучшите его, чтобы также разрешить подачу отрицательных чисел (разрешить «ключ») и работать с IE.

function digits_only(evt, form) { 
    var evt = evt || window.event, 
     targ = evt.target || evt.srcElement, 
     charCode = evt.which || evt.keyCode, 
     keyChar = String.fromCharCode(charCode), 
     isValid = true; 
    if (charCode > 13) { 
     isValid = /[0-9.]/.test(keyChar); 
     //if a dolt is already in input 
     if (keyChar === '.' && /\./.test(targ.value)) { 
      isValid = false; 
     } 
    } 
    return isValid; 
} 
+0

HI, Является ли это хороший подход? Что произойдет, если пользователь скопирует или перетащит какой-либо текст в поле ввода. Я думаю, вам лучше сделать валидацию для отправки события. – rahul

+0

Да, валидация также должна быть добавлена, но то, что он просил сейчас, ограничивал ввод – Dels

+0

Но вы не можете быть уверены, каким образом пользователь вводит ввод. Он может печатать, вставлять или даже перетаскивать текст. – rahul

ответ

3

Я думаю, что вы ищете так называемый «вход маски». Они намного мощнее, чем просто номера. Но вы можете использовать их для этого. Google «входная маска JavaScript» или выйдите this jQuery Plugin.

EDIT: Похоже, связанный плагин поддерживает только маски фиксированной длины, но этот термин может быть хорошей отправной точкой ...

+0

http://stackoverflow.com/questions/2479653/jquery-input-mask-length – Kirzilla

1

Это на веб-приложении ASP.NET? Вы можете использовать AjaxControlToolkits MaskEditExtender.

0

Я спрашиваю подобный вопрос здесь:
restrict user input using javascript

, но никто не даст точного ответа на проблему, так что давайте ждать, пока WebForms 2.0 выпустила

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