Просмотр исходного кода

Merge pull request #57 from crowi/improve-paste-event

Added paste event handler to improve textarea editor.
Sotaro KARASAWA 10 лет назад
Родитель
Сommit
3a2dd38379
1 измененных файлов с 23 добавлено и 0 удалено
  1. 23 0
      resource/js/crowi-form.js

+ 23 - 0
resource/js/crowi-form.js

@@ -212,6 +212,29 @@ $(function() {
     }
     }
   });
   });
 
 
+  var handlePasteEvent = function(event) {
+    var currentLine = getCurrentLine(event);
+    var $target = $(event.target);
+    var pasteText = event.clipboardData.getData('text');
+
+    var match = currentLine.text.match(/^(\s*(?:>|\-|\+|\*|\d+\.) (?:\[(?:x| )\] )?)/);
+    if (match) {
+      if (pasteText.match(/(?:\r\n|\r|\n)/)) {
+        pasteText = pasteText.replace(/(\r\n|\r|\n)/g, "$1" + match[1]);
+      }
+    }
+
+    $target.selection('insert', {text: pasteText, mode: 'after'});
+
+    var newPos = currentLine.end + pasteText.length;
+    $target.selection('setPos', {start: newPos, end: newPos});
+  };
+
+  document.getElementById('form-body').addEventListener('paste', function(event) {
+    event.preventDefault();
+    handlePasteEvent(event);
+  });
+
   var unbindInlineAttachment = function($form) {
   var unbindInlineAttachment = function($form) {
     $form.unbind('.inlineattach');
     $form.unbind('.inlineattach');
   };
   };