【问题标题】:jQuery fieldselection replaceSelection doesn't works for mejQuery 字段选择替换选择对我不起作用
【发布时间】:2011-12-06 09:47:06
【问题描述】:

嗨,这是简单的 jquery 字段选择插件。

   /*
 * jQuery plugin: fieldSelection - v0.1.1 - last change: 2006-12-16
 * (c) 2006 Alex Brem <alex@0xab.cd> - http://blog.0xab.cd
 */

(function() {

    var fieldSelection = {

        getSelection: function() {

            var e = (this.jquery) ? this[0] : this;

            return (

                /* mozilla / dom 3.0 */
                ('selectionStart' in e && function() {
                    var l = e.selectionEnd - e.selectionStart;
                    return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };
                }) ||

                /* exploder */
                (document.selection && function() {

                    e.focus();

                    var r = document.selection.createRange();
                    if (r === null) {
                        return { start: 0, end: e.value.length, length: 0 }
                    }

                    var re = e.createTextRange();
                    var rc = re.duplicate();
                    re.moveToBookmark(r.getBookmark());
                    rc.setEndPoint('EndToStart', re);

                    return { start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text };
                }) ||

                /* browser not supported */
                function() { return null; }

            )();

        },

        replaceSelection: function() {

            var e = (typeof this.id == 'function') ? this.get(0) : this;
            var text = arguments[0] || '';

            return (

                /* mozilla / dom 3.0 */
                ('selectionStart' in e && function() {
                    e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
                    return this;
                }) ||

                /* exploder */
                (document.selection && function() {
                    e.focus();
                    document.selection.createRange().text = text;
                    return this;
                }) ||

                /* browser not supported */
                function() {
                    e.value += text;
                    return jQuery(e);
                }

            )();

        }

    };

    jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });

})();

我不明白为什么这样做,textarea 元素中的选定文本没有被替换。

$('.wysiwyg-editor-italic').live('click',function(){
   var _selection = $('.wysiwyg textarea').getSelection().text;
   var wcode = "";

   if(_selection){
       $('.wysiwyg textarea').replaceSelection("{italic}"+_selection+"{/italic}");
       console.log(_selection);
    }
    else{
        wcode = "{italic} italic {/italic}";
    }
    var wysiwyg_val = $('.wysiwyg textarea').val();

    $('.wysiwyg textarea').val("").val(wysiwyg_val+wcode);
     $('.wysiwyg-preview').html(wysiwyg_val);
    $('.wysiwyg textarea').focus();



    refresh_preview()
});

在控制台中我可以看到_selection,这没问题,但之后没有被替换……也许我错过了什么?

【问题讨论】:

标签: javascript jquery jquery-plugins selectedtext


【解决方案1】:

不幸的是,这似乎是图书馆的一个错误。

我也受到了这个错误的影响。除了 replaceSelection() 部分之外,一切都检测到并且运行良好。我最终使用了Rangyinputs。有一天,当我有空闲时间时,我会尝试修复 Fieldselection 和 pull request 上的这个错误。

【讨论】:

    【解决方案2】:

    请你做一个小提琴来显示这个问题吗?试试新版库:https://github.com/nikolasmagno/jquery-fieldselection/

    我相信它会起作用的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2013-05-04
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多