Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Валидатор тегов (https://javascript.ru/forum/jquery/17355-validator-tegov.html)

dima85 15.05.2011 23:42

Валидатор тегов
 
Появилась задача сделать условие если в поле есть запятые, то alert('ок') если в поле нет запятых то alert('error').

Насколько я понимаю необходимо сделать цикл который пробежится по нужному полю и проверит каждый символ на совпадение с запятой. Или может с jquery это можно сделать как-то проще?


Спасибо.

poorking 15.05.2011 23:50

var str = "123, 123";

	alert("есть ли запятые? - " + (/,/.test(str) ?  "да" : "не"));

dima85 16.05.2011 00:08

Ого, шикарно. Честно сказать впервые вижу команды начинающиеся с скобок.
Я немного изменил условие:
(/,/.test($("#tag span").html()) ?  $("#tag i").css("display", "none") : $("#tag i").css("display", "block"));


Все замечательно работает. Но может можно как-то это понятней сделать. Меня очень смущают передние скобки. Как JavaScript понимает что это?

poorking 16.05.2011 00:17

dima85,
эмм.. какие передние скобки?
? : - это условный оператор

Можете сделать так
if(/,/.test(str)){

}else{

}

суть та же.
/,/
- это могучее регулярное выражение, про них тут
Регулярные выражения
и тут
Особенности регулярных выражений
Вместо всего этого можно воспользоваться indexOf методом строк
if(str.indexOf(",") != -1){
 //запятые есть
}else{
 //запятых нет
}

Делайте как считаете нужным, тернарный оператор ухудшает читаемость кода, но делает его короче. Без регулярного выражения тут можно обойтись конечно. Что быстрее работает, indexOf или test я не знаю, но думаю у вас не особо важна такая мелкая оптимизация
UPD
(cond ? expr1 : expr2 )
Тут скобки нужны чтобы отделить одно выражение от другого
если бы было

alert("Привет" + false ? " ya" : " no");

то сами видите, что условие истинно, так как "Привет" + false после приведения к булевому типу == true
alert(Boolean("Привет" + false));

а если
alert("Привет" + (false ? " ya" : " no"));

то то условие ложно и все ок

dima85 16.05.2011 00:22

Спасибо большое за помощь и за статьи.


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