是否可以检查特定区域/文本中是否有人点击了textarea?
例如
<textarea>
Tanken
17/01/1970 13:31
KT.: Bargeld
BN.: 00000020
</textarea>
如果有人点击日期,我想开始function()
。问题是我无法使用数字位置。 Textarea的内容并非一成不变。
例如
<textarea>
Time: 13:31
KT.: Bargeld
BN.: 00000020
17/01/1970
</textarea>
或
<textarea>
Time: 13:31 / BN.: 00000020 / 17/01/1970
</textarea>
唯一静态的是日期格式。
有什么想法吗?或者不可能?
答案 0 :(得分:1)
您可以尝试获取selectionStart
的{{1}},从中导出单词(包裹在一对空格之间)。最后一步是使用正则表达式对某个日期模式测试该单词,如果它看起来像日期,只需运行您的代码:
<强> HTML 强>:
textarea
<强> JS 强>:
<textarea>
Time: 13:31
KT.: Bargeld
BN.: 00000020
17/01/1970
Tanken
17/01/1970 13:31
KT.: Bargeld
BN.: 00000020
Tanken
17/01/1970 13:31
KT.: Bargeld
BN.: 00000020
Tanken
17/01/1970 13:31
KT.: Bargeld
BN.: 00000020
</textarea>
答案 1 :(得分:0)
好吧,我不确定你是否可以通过简单的click
来做(也许这是可能的,但我认为它会很棘手或者根本不“干净”)。使用doubleclick
事件尝试此解决方法:
现场演示: http://jsfiddle.net/W762t/
CSS:
更改光标,让我们知道textarea
可点击的用户。
textarea {
cursor: pointer;
}
<强> HTML: 强>
我刚刚添加了一个div
元素用于测试目的。
<textarea>
Tanken
17/01/1970 13:31
KT.: Bargeld
BN.: 00000020
</textarea>
<textarea>
Time: 13:31 / BN.: 00000020 / 17/01/1970
</textarea>
<div id="log"></div>
jQuery:
代码说明:当文本上的用户doubleclicks
与date
提取的regex
匹配时,则表示doubleclick
事件是完成了date
文本。因此,doubleclick
事件将帮助您满足您的要求,因为它将允许抓取所选文本。
<强> e.g: 强>
$(function() {
var txt = $('textarea');
txt.dblclick(function() {
// Check for simple date format 'dd/mm/yyyy'
var match = this.value.match(/\d{2}\/\d{2}\/\d{4}/);
// If there is a match, date exists
var date = match ? match[0] : '';
// If date exists
if(date) {
// Get selection object
var selection = window.getSelection() ||
document.getSelection() ||
document.selection.createRange();
// Get selected text
var word = $.trim(selection.toString());
// Check if selected text matches date string
if(word && date.indexOf(word) > -1) {
// Do an action, in this case, print a log
showLog();
}
}
});
});
function showLog() {
$('#log').append('[DoubleClick] was done over date text<br>');
};