Samail

Samail
Рейтинг
369
Регистрация
10.05.2007

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, подняли, а на остальные опустили.

T.R.O.N:
Если у вас не может быть дробной части, то просто удалите из строки все, что не является цыфрами

Скрипт предусматривает одну точку, более того, если ввести 1000 в БД цифра будет в виде 1000.00 и при редактировании существующего объявления, в поле с ценой, загружается именно 1000.00. В общем, просто запретить точку нельзя, иначе при редактировании, каждый раз цену править придется.

T.R.O.N:
не понимаю в чем проблема?

В том, что у меня не получается это сделать.

Вот что в итоге получилось:

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.

T.R.O.N:
дабы немного усмирить человеческий фактор, далаете поле ввода а рядом выпадающий список с единицы/тысячи/миллионы.....

Тогда будет проблема в том, чтоб, БД попадала введенная сумма умноженная на 1, 1000, 1000000 в зависимости от того, что человек выбрал. К тому-же человеку придется ломать голову, как ввести 3 млн. 253 тыс. 553 руб.

So1:
Заводим контейнер вроде
Код HTML:

Тут я совсем запутался :)

А при варианте:

else

var regEx = /^[1-9]{1}[0-9\.]{2,}/;
if (!form.price.value.match(regEx)) {
alert( "Цена указана с ошибкой, проверьте правильность ввода данных" );
form.price.focus()
return false

} else if...
Не получится в текст ошибки значение "form.price.value * 1" вставить?

...тут вот ещё что, при таком варианте, если ввести 22.00, то тоже добавляется.

Просто у меня была мысль такая: пользователь вводит 10 тыс., получает сообщение, что вводить можно только цифры. Убирает тыс. и забывает добавить 000, получает сообщение, что указанная цена нереально низкая.

Samail добавил 29.06.2010 в 11:48

So1:
пользователи будут недоумевать - "почему я ввел 00001

А можно как-то эту цифру умноженную на 1, вставить в середину текста об ошибке? Что бы получилось, что-то вроде: "Указанная цена - 22 руб., слишком низкая для данного вида товаров. Проверьте правильность ввода."

So1, это проверка только по второму пункту или по обоим сразу? Нужна раздельная, чтоб сначала выдавалось сообщение, что вводить можно только цифры и точку, а потом уже проверять число цифр.

Samail добавил 29.06.2010 в 10:42

So1:
var regEx = /^[1-9]{1}[0-9\.]{2,}/;

Спасибо, но теперь если ввести 012345, то тоже выдается ошибка, можно сделать так, чтоб нули в начале числа, просто не учитывались?

T.R.O.N:
может ли быть ситуация, что строка будет иметь вид Спасибо 021abc

Ну юзеры то ввести могут всё что угодно. Ноль перед цифрой конечно не стоит считать при подсчете цифр. Правильные варианты только: 1235 или 12345.10, в БД маска 0.00, т.е. если ввести 12,345 то в БД окажется только 12.00.

Str01tel, спасибо.

pauk:
Мосье - теоретег?

Мосье - практег уже закрывал сайты через прокурора?

Всего: 3620