jquery, разработкаГадская связка FCKEditor и jQuery UI

Была у меня задача написать плагин для FCKEditor, чтобы была возможность вставлять фотографии из фотобазы. Плагин написал, окошко открывается из FCK, фотки показываются. У нас фотки все хранятся с разными размерами, то есть можно выбрать размер. Я решил это дело оформить с UI Dialog, чтобы было удобно. Все, открывается. Думаю закончил, щас только размеры соберу для всех фоток и будет готово. Ан нет! Когда кликаю на фотку, почему-то все окно браузера перекашивает и появляется черный прямоугольник.

Сначала думал что это глючит jQuery UI, начал тестить, закачал последнюю бету. Все равно, не работает и все. В Firebug тестил, из-за фрейма у окошка FCK там нельзя вызвать в консоли то что мне надо. И так и этак пробовал, не получается.

После 2х часов мучений решил поменять имя функции открытия окошка на другое. Теперь вместо «open», называется «openDialog». И чудо! Заработало. Оказывается, в Firefox эта функция открывает новое окно. Хотя я обычно использую window.open, и не понимаю как open делает тоже самое.

Совет: когда пишите на JS, проверяйте названия своих функций :)

jquery, разработкаjQuery и выход из функции

Недавно мне понадобилось сделать проверку форму на заполнение формы. Форма не простая, там много повторяющихся полей (загрузка нескольких фотографий) и есть возможность добавлять новые поля «не отходя от кассы». Так как я активно использую jQuery, то решение родилось само собой.

function check()
{
$(".check").each(function() {
if(проверка)
{
return false;
}
});
}

По идее, когда условие не удовлетворяется, то функция check должна возвратить false и не дать форме отправиться. На самом деле получается так, что return относиться не к функции check, а к внутренней функции от each. То есть, false получится там, а он нам не нужен.

Так как я этого не знал, долго мучился и не мог понять где ошибка. В итоге я дебагером начал по строчно проходить код и увидел где у меня ошибка. Решение получилось простым:

function check()
{
var list = $(".check");

for(var i=0; i < list.length; i++)
{
var el = list[i];
var id = $(el).attr("name");
id = id.match(digitRegexp);
if(проверка)
{
return false;
}
};

Надеюсь, никто не столкнется с такой ошибкой :)