Javascript-单击svg形状时调用函数。

Javascript-单击svg形状时调用函数。,javascript,html,svg,Javascript,Html,Svg,我想做一些屏幕键盘。当我点击一个方块时,它会在一个文本区域上写一个特定的字母 我想每次按下一个新的方块(并写一个新的字母)时调用一个javascript函数 使用真正的电脑键盘,我会使用“keyup”。但在这里它不起作用(mouseup也不起作用) 小型演示: 多谢各位 HTML 我会稍微改变一下你实施的方式。不要对每个矩形使用不同的内联单击事件处理程序,而是以编程方式将单个单击事件委托给所有矩形。要区分应该附加哪个字符,可以将数据属性添加到包含它们所表示的字符的矩形中,并在单击处理程序中检索

我想做一些屏幕键盘。当我点击一个方块时,它会在一个文本区域上写一个特定的字母

我想每次按下一个新的方块(并写一个新的字母)时调用一个javascript函数

使用真正的电脑键盘,我会使用“keyup”。但在这里它不起作用(mouseup也不起作用)

小型演示:

多谢各位

HTML


我会稍微改变一下你实施的方式。不要对每个矩形使用不同的内联单击事件处理程序,而是以编程方式将单个单击事件委托给所有矩形。要区分应该附加哪个字符,可以将数据属性添加到包含它们所表示的字符的矩形中,并在单击处理程序中检索它们的值。要处理物理键盘输入,您有一个专门用于该操作的单独事件绑定。下面是一个我将如何处理这个问题的工作示例,其中有一些关于它正在做什么的说明

函数yourother函数(输入){
log('您键入了“'+输入+”);
}
$(函数(){
//处理屏幕上的键盘点击(仅在带有数据字符的矩形上)
//属性(存在)
$('svg rect[数据字符])。单击(函数(){
//检索“数据字符”属性值
var character=$(this.data('character');
//通过追加字符修改textarea的值
$('#text').val(函数(i,old){returnold+character;});
//调用其他函数
你的其他功能(角色);
});
//处理物理键盘按键:
$('#text')。按键(功能(e){
//检索事件键代码的字符表示形式
var character=String.fromCharCode(e.which);
//调用其他函数
你的其他功能(角色);
});
});    


它使用的是keyup(我的真实键盘),而不是屏幕键盘……我可以将svg放在一个文件中,将js脚本放在另一个文件中吗?你应该将JavaScript放在一个单独的文件中;这始终是一个很好的实践(请注意,我的标记不再具有任何内联JavaScript)。只要所使用的技术能够正确输出SVG标记,SVG标记就可以放在任何您想要的地方。回答含糊不清,但您尚未使用任何服务器端技术来标记您的问题,以获得更好的答案。我担心它无法正常工作。我点击矩形,它就不写了。我相信我做得对。我有keyboard.php,并将其包含在index.php中。在我的索引php中,我还有我的javascript。你试过运行我的代码片段(“运行代码片段”按钮)吗?在这里很好用。页面中是否包含jQuery库?哦,我忘了将“svg rect”更改为“svg path”。非常感谢您抽出时间!
<svg width="60px" height="60px">

<rect width="50" height="50" onclick="getElementById('text').value+='a'">
</svg>

<svg width="60px" height="60px">
    <rect width="50" height="50" onclick="getElementById('text').value+='b'">
</svg>

<textarea id="text"></textarea>
$(function(){
    $("#text").keyup(function() { 
        console.log("test");
    });
});