Валидатор тегов
Появилась задача сделать условие если в поле есть запятые, то 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, время: 00:47. |