vanjouke, ну это Инфобокс. Зато техподдержка нормальная и есть большая вероятность, что контора не загнется через пол года.
Пока раздумывал, ценник на CPU: Core 2 Duo 2 ядра по 2.13 Ghz RAM: 1Gb HDD: 2x160Gb и CPU: Core 2 Duo 2 ядра по 2.33 Ghz RAM: 1Gb HDD: 320Gb, подняли, а на остальные опустили.
Скрипт предусматривает одну точку, более того, если ввести 1000 в БД цифра будет в виде 1000.00 и при редактировании существующего объявления, в поле с ценой, загружается именно 1000.00. В общем, просто запретить точку нельзя, иначе при редактировании, каждый раз цену править придется.
В том, что у меня не получается это сделать.
Вот что в итоге получилось:
if (form.price.value == ""){ alert( "Поле цена, должно быть заполнено" ); form.price.focus() return false } else var regEx1 = /^[0-9\.\ ]+$/; if (!form.price.value.match(regEx1)) { alert( "В поле цена, должны содержаться только цифры." ); form.price.focus() return false } else if(form.type.value == "1" && form.price.value * 1 < 10000) { alert( "Указана слишком низкая цена для продажи недвижимости. Проверьте правильность ввода." ); form.price.focus() return false } else if(form.type.value == "2" && form.price.value * 1 < 100) { alert( "Указана слишком низкая цена. Проверьте правильность ввода." ); form.price.focus() return false } else var regEx = /^[1-9]{1}[0-9\.]{2,}/; if (!form.price.value.match(regEx)) { alert( "Цена указана с ошибкой, проверьте правильность ввода данных" ); form.price.focus() return false }
Уже много опечаток отсекается. Только вот если ввести 1.000.000 или 1.000 000, то такой вариант проходит, а в БД попадает 1.00.
Тогда будет проблема в том, чтоб, БД попадала введенная сумма умноженная на 1, 1000, 1000000 в зависимости от того, что человек выбрал. К тому-же человеку придется ломать голову, как ввести 3 млн. 253 тыс. 553 руб.
Тут я совсем запутался :)
А при варианте:
else var regEx = /^[1-9]{1}[0-9\.]{2,}/; if (!form.price.value.match(regEx)) { alert( "Цена указана с ошибкой, проверьте правильность ввода данных" ); form.price.focus() return false } else if...
...тут вот ещё что, при таком варианте, если ввести 22.00, то тоже добавляется.
Просто у меня была мысль такая: пользователь вводит 10 тыс., получает сообщение, что вводить можно только цифры. Убирает тыс. и забывает добавить 000, получает сообщение, что указанная цена нереально низкая.
Samail добавил 29.06.2010 в 11:48
А можно как-то эту цифру умноженную на 1, вставить в середину текста об ошибке? Что бы получилось, что-то вроде: "Указанная цена - 22 руб., слишком низкая для данного вида товаров. Проверьте правильность ввода."
So1, это проверка только по второму пункту или по обоим сразу? Нужна раздельная, чтоб сначала выдавалось сообщение, что вводить можно только цифры и точку, а потом уже проверять число цифр.
Samail добавил 29.06.2010 в 10:42
Спасибо, но теперь если ввести 012345, то тоже выдается ошибка, можно сделать так, чтоб нули в начале числа, просто не учитывались?
Ну юзеры то ввести могут всё что угодно. Ноль перед цифрой конечно не стоит считать при подсчете цифр. Правильные варианты только: 1235 или 12345.10, в БД маска 0.00, т.е. если ввести 12,345 то в БД окажется только 12.00.
Str01tel, спасибо.
Мосье - практег уже закрывал сайты через прокурора?