Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   проверка поля формы (https://javascript.ru/forum/misc/43476-proverka-polya-formy.html)

rss 06.12.2013 20:29

проверка поля формы
 
Помогите понять и сделать проверку поля формы
нужно при вводе в форму:
- если () пустое поле, то все ОК
- если (a) буква, то что-то к примеру alert
- если (1 -> 1) число - ОК
- если (1,1 -> 1,1; 1.1 -> 1,1) дробное число, до 1 цифры после запятой - ОК
- если (1,11111 -> 1,1) дробное больше 1 цифры, то все лишние округляются, и - Ок
- если (,5 -> 0,5; .5 -> 0,5) начинается с точки или запятой, в любом случае и .и, превращается в запятую

http://jsfiddle.net/PXY4u/3/

<div class="sq">
    <input id="id_sq_pl" name="sq_pl" type="number" value="" />
</div>


$('.sq input').unbind().blur( function(){
        var id = $(this).attr('id');
        var val = $(this).val();
        switch(id)
        {
            case 'id_sq_pl':
                var regex = /^[0-9]?\d{0,5}[\.,]?\d{0,1}$/g;
                if ( regex.test(val) || val == '' ) {
                    var val = Math.round( val * 10 ) / 10;
                    $(this).val(val);
                } else {
                    alert('Введите число'); return false;
                }
            break;
        }
         console.log(val);
    });


что-то тут вообще запутался, почему-то не работает

Rise 06.12.2013 22:46

Зачем запятые в десятичных числах, должны быть точки - это стандарт

rss 07.12.2013 08:36

Цитата:

Сообщение от Rise (Сообщение 285069)
Зачем запятые в десятичных числах, должны быть точки - это стандарт

А вы откуда из Европы или России?
Какие стандарты у пользователя?
Это основная задача, данной формы, учесть всех, со своими стандартами в голове.

rss 07.12.2013 09:10

Форма для русско-язычных пользователей, а пользователи... Уверен в 99,9% случаях, где бы они не писали, ставят запятые.
...сейчас форма уже не зависимо от ввода [.,] принимает точку.

пс. Извините, если показалось, что настаиваю... Просто хочу высказать мысль, форма не для программистом, для простого пользователя.

Rise 07.12.2013 10:18

<input id="id_sq_pl" name="sq_pl" type="text" value="" />

<script>
document.getElementById('id_sq_pl').onblur = function() {
	if (/^(\d*[\.,]?\d+)?$/.test(this.value)) {
		this.value = ((Math.round(((this.value).replace(',','.'))*10)/10)+'').replace('.',',');
	} else {
		alert('Введите число');
	}
}
</script>

rss 07.12.2013 16:35

Как-то кривовато: http://jsfiddle.net/PXY4u/5/
Если ввести текст, он превращает его в 0
Цифры типа 4,5 - вообще удаляет

рони 07.12.2013 17:16

rss,
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>

  <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>



  <link rel="stylesheet" type="text/css" href="/css/result-light.css">

  <style type='text/css'>
    /* странная реактиция у формы
хотелось бы:
- если () пустое поле, то все ОК
- если (a) буква, то что-то к примеру alert
- если (1 -> 1) число - ОК
- если (1,1 -> 1,1; 1.1 -> 1,1) дробное число, до 1 цифры после запятой - ОК
- если (1,11111 -> 1,1) дробное больше 1 цифры, то все лишние округляются, и - Ок
- если (,5 -> 0,5; .5 -> 0,5) начинается с точки или запятой, в любом случае и .и, превращается в запятую
*/
  </style>



<script type='text/javascript'>
$(window).load(function(){
$('#id_sq_pl').blur( function(){
        var val = $(this).val();
        if(!val.length) return false;
        val = +val.replace(',','.');
        if(!val) {$(this).val('');alert('Введите правильное число'); return false};
        val = Math.round( val * 10 ) / 10;
        $(this).val((''+val).replace('.',','))
    });
});

</script>


</head>
<body>
  <div class="sq">
    <input id="id_sq_pl" name="sq_pl"  value="" />
</div>

</body>


</html>

Rise 07.12.2013 17:47

Цитата:

Сообщение от rss (Сообщение 285181)
Если ввести текст, он превращает его в 0
Цифры типа 4,5 - вообще удаляет

странно, похоже ты куда то в другое место вводишь :D

rss 07.12.2013 18:13

Цитата:

Сообщение от Rise (Сообщение 285190)
странно, похоже ты куда то в другое место вводишь :D

пример рони, работает именно так, как и хотелось бы, но стоит поменять тип поля на type="number"
ничего не работает
http://jsfiddle.net/PXY4u/8/

подскажите, в чем проблема?


Часовой пояс GMT +3, время: 09:45.