Валидатор тегов
Появилась задача сделать условие если в поле есть запятые, то alert('ок') если в поле нет запятых то alert('error').
Насколько я понимаю необходимо сделать цикл который пробежится по нужному полю и проверит каждый символ на совпадение с запятой. Или может с jquery это можно сделать как-то проще? Спасибо. |
var str = "123, 123";
alert("есть ли запятые? - " + (/,/.test(str) ? "да" : "не"));
|
Ого, шикарно. Честно сказать впервые вижу команды начинающиеся с скобок.
Я немного изменил условие:
(/,/.test($("#tag span").html()) ? $("#tag i").css("display", "none") : $("#tag i").css("display", "block"));
Все замечательно работает. Но может можно как-то это понятней сделать. Меня очень смущают передние скобки. Как JavaScript понимает что это? |
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"));
то то условие ложно и все ок |
Спасибо большое за помощь и за статьи.
|
| Часовой пояс GMT +3, время: 01:17. |