У меня есть форма, которая форматирует текст, который вводится несколькими текстовыми полями, и я хотел бы позволить пользователю набирать текст, вставлять текст и вставлять текст в текстовое поле. Событие javascript - format()
.
Я использовал onkeyup="format()
, когда пользователь вводит текст и вставляет текст, но я не могу понять, какое событие позволит пользователю выбрать текст, перетащить его в текстовое поле и запустить событие, чтобы автоматически обновить форматированный текст. Я пробовал ondrop
, onmouseup
и onchange
все безрезультатно.
У меня такое ощущение, что свойство onmouseup
работает, но проблема в том, что событие вызывается сразу после отпускания мыши, до того, как в текстовом поле текста появится новый пользовательский текст, поэтому он выглядит как если оно не сработало, то когда оно действительно сработало, но в текстовом поле ничего не было. Может ли это быть? Если да, могу ли я использовать setTimeout
, чтобы отложить событие на 500 миллисекунд (или что-то еще) до появления текста?
Вот код JavaScript:
<script language="JavaScript">
function format() {
var author = document.form.author.value;
var credentials = document.form.credentials.value;
var date = document.form.date.value;
var publication = document.form.publication.value;
var title = document.form.title.value;
var evidence = document.form.evidence.value;
var tagline = document.form.tagline.value;
document.getElementById('txtarea').innerHTML = ("<b>" + tagline + "</b>" + "</br >" + "<br />" + "<i>" + "<u>" + author + " " + date + "." + "</u> " + author + " (" + credentials + ") " + date + " " + publication + " " + title + " " + (window.top.getBrowser().selectedBrowser.contentWindow.location.href) + "</i>" + "<br />" + "<br />" + evidence);}
function clearForm() {
document.getElementById('txtarea').innerHTML = "";
}
</script>
Вот одно из 7 текстовых полей, которые у меня есть (у меня есть onkeyup, который охватывает тип и вставку, но я не знаю, что использовать для перетаскивания):
<form class="right_aligned" name="form" method="get" action="" id="form" onkeyup="format()" onmouseup="format()" ondrop="format()">
<div style="float: left;"><input ondblclick="this.value=''" type="text" name="publication" value="Publication..." id="publication" style="border:1px solid;border-color:#B0B0B0;width:225px;padding:4px;margin:10px;color: #000;"
ondrop="format()" ondragover="{this.value=''; this.style.color='#000';}" onfocus="if (this.value==this.defaultValue) {this.value=''; this.style.color='#000';}" onblur="if(this.value=='') {this.value=this.defaultValue; this.style.color='#000';}"></div>
... и вот contenteditable div, в который выводится текст:
<div CONTENTEDITABLE id="txtarea" ondblclick="document.execCommand('selectAll',false,null);" style="float:left;overflow:auto;padding:5px;background-color:#FFF;border:1px solid;border-color:#B0B0B0;outline:none;width:213px;height:260px;font-size:.75em;margin-left:10px;margin-right:10px;margin-bottom:10px;margin-top:5px" type="text"></div>
Кстати, это расширение для Firefox, поэтому кросс-браузер не проблема. Это просто должно работать в Firefox.