Для регулярного выражения попробуйте это: ^\d+\.?\d+$
.
Он будет соответствовать строке, которая начинается с одной или нескольких цифр, за которыми, возможно, следует один период, за которым следует одна или несколько цифр, которые образуют конец строки.
Чтобы проверить значение, в вашем коде проверки сделайте следующее:
//Add event handler using W3C event binding
document.getElementById("price").addEventListener("blur", function()
{
//Test the value of the input field and whether it matches the regular expression, where val is the value extracted from the field
if(!this.value.match(/^\d+\.?\d+$/))
{
alert("Validation error, must be numeric");
}
}, false);
РЕДАКТИРОВАТЬ: обратите внимание, что если вы хотите добавить привязку события в IE, вы можете использовать либо традиционную привязку события document.getElementById("price").onblur = function(){...}
, либо модель привязки события IE: document.getElementById("price").attachEvent("onblur", function(){...});
обратите внимание, что использование attachEvent
не присваивает объект this внутри функция обратного вызова, поэтому вам нужно получить объект события (window.event
), а затем извлечь элемент, используя window.event.srcElement
. См. http://www.quirksmode.org/js/events_advanced.html для справки