Проверка формы комментария jquery - PullRequest
1 голос
/ 08 марта 2012

У меня проблема с тем, что мои плагины JavaScript кажутся конфликтующими, но незначительно.Если вы посмотрите на это fiddle , где я создаю свою форму, вы заметите, что после того, как поле ввода создано, а затем удалено, предупреждающие сообщения начинают появляться на следующем элементе (ниже того места, где они изначально размещены).

Для пояснения: если пользователь еще не ввел какую-либо информацию, оповещения всплывают в правильном положении (всплывают справа от поля ввода красным цветом).Однако, если пользователь ввел свое имя, а затем удаляет свое имя, предупреждение ajax («это поле обязательно для заполнения») появляется в неправильном месте в поле ниже, где это должно быть.Проблема появилась после того, как я включил эту часть JavaScript (управляет другим меню на странице):

/* jQuery Content Panel Switcher JS */
var jcps = {};
jcps.fader = function(speed, target, panel) {
    jcps.show(target, panel);
    if (panel == null) {panel = ''};
    $('.switcher' + panel).click(function() {
        var _contentId = '#' + $(this).attr('id') + '-content';
        var _content = $(_contentId).html();
        if (speed == 0) {
            $(target).html(_content);
        }
        else {    
            $(target).fadeToggle(speed, function(){$(this).html(_content);}).fadeToggle(speed);
        }
    });
};
jcps.slider = function(speed, target, panel) { 
    jcps.show(target, panel);
    if (panel == null) {panel = ''};
    $('.switcher' + panel).click(function() {
        var _contentId = '#' + $(this).attr('id') + '-content';
        var _content = $(_contentId).html();
        if (speed == 0) {
            $(target).html(_content);
        }
        else {    
            $(target).slideToggle(speed, function(){$(this).html(_content);}).slideToggle(speed);
        }
    });
};
jcps.show = function (target, panel) {
$('.show').each(function() {
    if (panel == null) {
        $(target).append($(this).html() + '<br/>');
    }
    else {
        var trimPanel = panel.replace('.', '');
        if ($(this).hasClass(trimPanel) == true){$(target).append($(this).html() + '<br/>');}
    }
});
}

Спасибо за любую помощь.

1 Ответ

1 голос
/ 08 марта 2012

Я думаю, что вы, возможно, правы в отношении некоторых конфликтов CSS, но я смог приблизиться к тому, что, как я полагаю, является желаемым эффектом, изменив CSS на элементах label.error.

label.error { color: red; position: relative; float: right: top: -30px; }

Пример: http://jsfiddle.net/shanabus/kmJ87/1/

...