Событие фокуса не запускается из текстового поля с использованием CKEditor - PullRequest
0 голосов
/ 14 ноября 2011

Я использую ckeditor для показа отформатированного текста. Я использую Asp.net mvc 3 вспомогательный метод бритвы Html.CKEditorFor (x => x.Description) для вышеуказанной цели. Мне нужно реализовать Функция водяного знака в этом ckeditor. Я использую следующий код для этой цели,

    $("#Description").focus(function() {

    $(this).filter(function() {

        // We only want this to apply if there's not
        // something actually entered
        return $(this).val() == "" || $(this).val() == "Type here"

    }).removeClass("watermarkOn").val("");

});       

Но событие focus не сработало, когда я сфокусировал текстовое поле ckeditor. Итак, я проверил документ с помощью firebug и обнаружил, что текст по умолчанию отображается внутри следующего класса ('cke_show_borders'), сгенерированного помощником mvc ckeditor. код выше

    $(".cke_show_borders").focus(function() {
    $(this).filter(function() {

        // We only want this to apply if there's not
        // something actually entered
        return $(this).val() == "" || $(this).val() == "Type here"

    }).removeClass("watermarkOn").val("");

}); 

Но все же фокусное событие не срабатывает. Где я иду не так, пожалуйста, помогите его срочно. Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Мое лучшее предположение состоит в том, что вы должны попытаться сделать это, используя их API вместо jQuery.Вы проверили их функции разработчика ?

Кстати, я видел, как люди меняют поведение CKEditor по умолчанию, используя что-то вроде:

var editor = CKEDITOR.replace('ckeditor');
editor.on('instanceReady', function(e) {
    // customize stuff here
    // this.document.$.childNodes[1].childNodes[1].style.styleName = 'value';
    editor.focus();
});

Аналогично, вы можете изменитьСобытие onfocus выглядит так:

editor.on('focus', function(e) {
    // code here
});
0 голосов
/ 14 ноября 2011

Убедитесь, что вы поместили этот код в обработчик $(document).ready, чтобы убедиться, что DOM полностью загружен, прежде чем пытаться подписаться на какие-либо события:

$(function() {
    $('.cke_show_borders').focus(function() {
        $(this).filter(function() {
            // We only want this to apply if there's not
            // something actually entered
            return $(this).val() == '' || $(this).val() == 'Type here';
        }).removeClass('watermarkOn').val('');
    }); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...