Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: проверка
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » проверка

Страниц (1): [1]
 

1. SAD - 25 Февраля, 2011 - 20:52:06 - перейти к сообщению
есть текстовое поле
беру с него значение(можно ввести только число) и делаю math.round
потом делаю проверку на пустоту заполнения поля
if (var == '') то ничего не ввели
в чем собственно прикол, если стоит 0, то он говорит, что поле незаполнено. почему math.round все портит?? если не округлять, то все гуд
2. Champion - 25 Февраля, 2011 - 21:05:33 - перейти к сообщению
Кусок кода был бы понятнее и короче.
3. OrmaJever - 25 Февраля, 2011 - 21:25:47 - перейти к сообщению
нужно === ставить, и возможно не '' а NULL
4. ALEN - 25 Февраля, 2011 - 21:29:46 - перейти к сообщению
SAD пишет:
можно ввести только число

SAD пишет:
проверку на пустоту заполнения

А почему сразу всех не обломать и не проверять с помощью регулярного выражения вводимое число и одновременно смотреть, чтоб был 1 или более символов??? Для чего мучить попу и думать как обойти?
5. SAD - 25 Февраля, 2011 - 22:23:43 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. var firstdif = Math.round($('#firstdif').val());
  2. if (firstdif == '') {
  3.     alert('Некорректно заполнено поле');
  4.     return false;
  5. }

пишет true
6. ALEN - 25 Февраля, 2011 - 22:29:26 - перейти к сообщению
SAD
я же предложил вариант с регуляркой, плюс предлагаю стараться использовать JS а не его библиотеки
7. SAD - 25 Февраля, 2011 - 22:33:23 - перейти к сообщению
это лишь малая часть большой системы
8. ALEN - 25 Февраля, 2011 - 22:35:20 - перейти к сообщению
SAD
Ладно, главное чтоб задача правильно решилась))
9. evgenijj - 25 Февраля, 2011 - 22:38:58 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. var firstdif = Math.round($('#firstdif').val());
  2.       if (firstdif == '') {
  3.           alert('Некорректно заполнено поле');
  4.           return false;
  5.       }

Как эта конструкция может вернуть true -- оставим на совести автора темы. Но мне непонятно, как вообще эта конструкция может вернуть пустую строку ''. Если мы приводим некую строку (а поле input у нас строка) к целому, то мы получаем либо 0, либо положительное или отрицательное целое число. В любом случае -- не пустую строку.
10. JustUserR - 25 Февраля, 2011 - 23:47:48 - перейти к сообщению
SAD пишет:
В чем собственно прикол, если стоит 0, то он говорит, что поле незаполнено. почему math.round все портит?? если не округлять, то все гуд
Для осуществления корректного решения предполагаемой задачи, необходимо произведение сравнения требуемых информационных полей без использования конструкций, приводящих к осуществлению автоматического преобразования типа данных; в качестве возможног средства решения допустимо использование программных элементов, позволяющих проводить идентификацию объектов в string-уровне, и обеспечивать требуемые операции сопоставления в зависимости от используемого метода трактования информационного поля
CODE (text):
скопировать код в буфер обмена
  1. var inp_val=document.all["field_id"].value // String interpretation
  2. if(inp_val==="") {/* Field is empty */}
  3. else {inp_val=new Number(Math.round(parseInt(inp_val)))
  4. }
11. SAD - 26 Февраля, 2011 - 01:18:18 - перейти к сообщению
Если не делать округление,то все нормально. Если сделать, то не гуд.
evgenijj пишет:
Как эта конструкция может вернуть true -- оставим на совести автора темы.

делаю alert(firstdif == ''); он и показывает true Улыбка
поверьте, я знаю, что пишу. я не лапоть)) я работаю c js каждый божий день - работа у меня такая.
12. OrmaJever - 26 Февраля, 2011 - 01:49:44 - перейти к сообщению
Значение из поля берётся в типе string, округляя функция возвращает тип int, а без округления так и остаётся string иполучается первое значение 0, а второе "0". А разницу прочитай тут http://javascript[dot]ru/basic/types#boolean
Поэтому нужно переводить в один тип и сравнивать.
13. SAD - 26 Февраля, 2011 - 01:53:36 - перейти к сообщению
прикольно
спс
14. JustUserR - 27 Февраля, 2011 - 16:18:28 - перейти к сообщению
SAD пишет:
Если не делать округление,то все нормально. Если сделать, то не гуд
Использования языка JS предполагает возможность осуществления автоматического преобразования типового уровня трактования для информационных полей, что обеспечивается в процессе использование встроенных функциональных объектов и операций, предполагающих использование фиксированного типа данных в заданной позиции размещаемого аргумента или операнда

 

Powered by ExBB FM 1.0 RC1