Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проверка текста в input (https://javascript.ru/forum/events/32373-proverka-teksta-v-input.html)

maximus 14.10.2012 01:19

Проверка текста в input
 
Помогите реализовать следующее:
Есть форма с полем
<input name="name" type="text" id="name" value="" />

Можно ли как то сделать так:
Подсчитать сколько запятых в поле и если их меньше 10 тогда показывает окошко с сообщением?

Nekromancer 14.10.2012 02:14

if (value.split(',').length < 8) {
// show popup
}

cyber 14.10.2012 02:17

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
<input type="text">
 <input type="button" value="go">   
    
    <script>

   
      
  var inp = document.body.children[0];    
   
   var bt =  document.body.children[1]  
      
    bt.onclick = function () {
      
      
    var value = inp.value;
      value = value.match(/,/g);
      
      if(value && value.length >= 10) return;
      
      
      alert("Запятых меньше 10");
      
    
    }

    </script>

  </body>
</html>

Nekromancer 14.10.2012 02:18

cyber,
рекулярка то накой?

cyber 14.10.2012 02:22

Цитата:

Сообщение от Nekromancer (Сообщение 209923)
cyber,
рекулярка то накой?

при таком содержание инпута
56765,6757657

ваш код вернет такой массив

["56765", "6757657"]

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
<input type="text" value="2312,21312,123">
 <input type="button" value="go">   
    
    <script>

   
      
  var inp = document.body.children[0];    
   
   var bt =  document.body.children[1] ;
      
       alert(inp.value.split(",").length);
      
    bt.onclick = function () {
      
      
    alert(inp.value.split(",").length);
      
    
    }

    </script>

  </body>
</html>

Nekromancer 14.10.2012 02:27

cyber,
да неужели. А я думал массив из запятых.

Это делается так:
var MY_MAGIC_NUMBER = 10;
if (value.split(',').length < (MY_MAGIC_NUMBER + 1)) {
// show popup
}

cyber 14.10.2012 02:30

Цитата:

Сообщение от Nekromancer (Сообщение 209925)
cyber,
да неужели. А я думал массив из запятых.

Это делается так:
var MY_MAGIC_NUMBER = 10;
if (value.split(',').length < (MY_MAGIC_NUMBER + 1)) {
// show popup
}

угу 10 раз , а потом еще и сальто делает.
http://javascript.ru/String/split
Цитата:

Строка бьется по separator, при разбивании separator пропадает:

arr = "a,b,c".split(',') // массив ["a", "b", "c"]


Nekromancer 14.10.2012 02:33

cyber,
сарказм, не? В код посмотрите.

cyber 14.10.2012 02:39

Nekromancer,
и? я вижу строку в value которую метод split разбивает по зяпятыми, а про этот мараз я вообще промолчу
if (value.split(',').length < (MY_MAGIC_NUMBER + 1))

так как в моему случае записуеться в массив 10 запятых , а вашем все кроме запятых, а +1 для того что бы 100% "супер" код получился?
что бы закончить флуд , пример ниже все прекрасно доказывает!
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
<input value="111,222,333,444">
    <script>

var input = document.body.children[0];
      
var value = input.value;
      
      alert("Мой вариант:  "+value.match(/,/g));    
      alert("Ваш вариант:  "+value.split(","))


    </script>

  </body>
</html>

Nekromancer 14.10.2012 02:46

cyber,
Что он доказывает? Что надо поднимать регулярки для поиска запятых?

cyber 14.10.2012 02:49

Цитата:

Сообщение от Nekromancer (Сообщение 209932)
cyber,
Что он доказывает? Что надо поднимать регулярки для поиска запятых?

ну да лучше создать массив не известно какого размера что посчитать его размер и потом удалить вообще не каких напрягов со стороны компилятора..

Nekromancer 14.10.2012 03:00

Цитата:

вообще не каких напрягов со стороны компилятора..
http://jsperf.com/reg-vs-split-jsru

Я тоже так думаю.

Nekromancer 14.10.2012 03:08

Только он интерпретатор, если что.

melky 14.10.2012 10:33

Цитата:

Сообщение от Nekromancer
Только он интерпретатор, если что.

но он создаёт байткод, который тут же исполняет. т.е. он и компилятор тоже

bes 14.10.2012 11:29

Цитата:

Сообщение от melky
но он создаёт байткод, который тут же исполняет. т.е. он и компилятор тоже

melky, если верить векипедии, они этим и отличаются, компилятор транслирует всю программу без выполнения, интерпретатор действует шагами "трансляция + выполнение".
Если за компиляцию принять не полный перевод, а покомандный, тогда да.

melky 14.10.2012 11:38

Цитата:

Сообщение от bes (Сообщение 209956)
melky, если верить векипедии, они этим и отличаются, компилятор транслирует всю программу без выполнения, интерпретатор действует шагами "трансляция + выполнение".
Если за компиляцию принять не полный перевод, а покомандный, тогда да.

погрузился немного в тему :)
http://ru.wikipedia.org/wiki/Движок_JavaScript

bes 14.10.2012 11:45

Цитата:

Сообщение от melky
погрузился немного в тему
http://ru.wikipedia.org/wiki/Движок_JavaScript

не заметил там намека на полную трансляцию (компиляцию) исходного текста программы :)

maximus 14.10.2012 12:55

cyber, ваш вариант отлично работает =)
Спасибо всем за помощь =)

dmitriymar 14.10.2012 13:12

cyber,
Nekromancer прав . проход регуляркой сожрёт больше ресурсов и будет выполняться дольше чем разбиение строки на массив

maximus 14.10.2012 13:14

не пойму, на тестовой странице все работает, а вот в форме не пашет =(
<!DOCTYPE HTML>
<html>
    <head> </head>
  <body>
  
        <form action="" method="post" enctype="multipart/form-data">
            <input type="text" name="name" id="name" value="" />
            <input type="text" name="tags" id="tags" value="" />
            
            <input class="upl" type="submit" name="upload" id="upload" value="загрузить" />
        </form>
        
        <script>
          var inp = document.body.children[0];    
           var bt =  document.body.children[1]  
            bt.onclick = function () {
              
            var value = inp.value;
              value = value.match(/,/g);
              if(value && value.length >= 10) return;
              alert("Запятых меньше 10");
            }
        </script>
        
    </body>
</html>

dmitriymar 14.10.2012 13:14

Цитата:

Сообщение от bes
не заметил там намека на полную трансляцию (компиляцию) исходного текста программы

http://ru.wikipedia.org/wiki/V8_%28%...avaScr ipt%29

bes 14.10.2012 13:33

Цитата:

Сообщение от dmitriymar
http://ru.wikipedia.org/wiki/V8_%28%...avaScr ipt%29

компиляция на лету делает исходное понятие компиляции не точным


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