2016-05-21 17 views
1

私は、ユーザがテキストを入力し、それを選択してからボタンをクリックすることでリンクを追加できるcontentedit divを持っています。次に、テキストの上にマウスを移動して別のボタンをクリックすると、リンクが削除されます。選択されたテキストがリンクであるかどうかを確認する

現在、両方のボタン(リンクとリンク解除)が表示されます。アンリンクボタンが隠され、ユーザはdivの内側にいくつかのテキストを選択したときにテキストがリンクを持っているならば、それはチェックしていすることが可能です:

  • その場合は、リンクボタンが非表示になりますとリンク解除]ボタンが表示されます。リンクを解除するには、リンク解除ボタンをクリックしてください。
  • リンクボタンはそのままです。

    <button type="button" class="center" id="link">Link</button> 
    <button type="button" class="center" id="unlink">Unlink</button> 
    <div style="border: 1px solid;" contenteditable> 
    
    <script> 
    $('#link').click(function() { 
    var linkURL = prompt("Enter the URL for this link:", "http://"); 
    document.execCommand("CreateLink", false, linkURL); 
    updateInput() 
    }); 
    
    $('#unlink').click(function() { 
    document.execCommand("UnLink", false, null); 
    updateInput() 
    }); 
    </script> 
    

JsFiddle:https://jsfiddle.net/yw66s03e/

+0

あなたが選択したテキストを使用して、それがリンクの確認し、非隠しにアンリンクのプロパティを変更するために正規表現を使用することができます。私はそれがうまくいくと思います。 – selten98

+1

残念ながら、contenteditable要素は 'onselect'イベントをサポートしていないので、この動作を扱うのは難しいでしょう。これは、選択がリンクかどうかをチェックする前に、まず処理しなければならないことです。http://stackoverflow.com/a/8443541/1414562 –

+0

このようなものが必要ですか?[http://jsbin.com/ mahiqiy/edit?js、output](http://jsbin.com/mahiqiy/edit?js,output) –

答えて

1

あなたはmouseupイベントと一緒にあなたのdivselectstartイベントリスナーを使用することができます。

CODE:

$("#unlink").fadeOut(); 
 
$('#link').click(function() { 
 
    var linkURL = prompt("Enter the URL for this link:", "http://"); 
 
    document.execCommand("CreateLink", false, linkURL); 
 
    $("#unlink").fadeIn(); 
 
    $("#link").fadeOut(); 
 
// updateInput(); 
 
}); 
 

 
$('#unlink').click(function() { 
 
    document.execCommand("UnLink", false, null); 
 
    $("#unlink").fadeOut(); 
 
    $("#link").fadeIn(); 
 
// updateInput(); 
 
}); 
 

 
$('div').on('selectstart', function() { 
 
    
 
    $("#unlink").fadeOut(); 
 
    $("#link").fadeIn(); 
 
     $(document).one('mouseup', function() { 
 
      var itemLink = itemIsLinked(); 
 
      if(typeof itemLink === "object" && itemLink[0] === true){ 
 
       $("#unlink").fadeIn(); 
 
       $("#link").fadeOut(); 
 
      }   
 
     }); 
 
}); 
 

 
$("body").on("keyup","div",function(e){ 
 
    if($("#unlink").css("display") != "none"){ 
 
    $("#unlink").fadeOut(); 
 
    $("#link").fadeIn(); 
 
    } 
 
}); 
 

 
function itemIsLinked(){ 
 
    if(window.getSelection().toString() != ""){ 
 
     var selection = window.getSelection().getRangeAt(0); 
 
     if(selection){ 
 
      if (selection.startContainer.parentNode.tagName === 'A' || selection.endContainer.parentNode.tagName === 'A') { 
 
       return [true, selection]; 
 
      } else { return false; } 
 
     } else { return false; } 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<button type="button" class="center" id="link">Link</button> 
 
<button type="button" class="center" id="unlink">Unlink</button> 
 

 
<div style="border: 1px solid;" contenteditable>

+0

大変ありがとうございました。最後に最後に終わってしまいました!_ –

+0

最後にやりました:) –

関連する問題