我在试着让一个函数正常工作。当单击表中的一行时,会出现一个弹出,其中显示的信息(来自单击的行)自动填充到文本字段中。这部分工作得很完美。
我现在要做的是,只有在行中没有单击按钮或复选框时才调用该函数。按钮部件正常工作,但复选框无效。
看来event.target.nodeName !=“复选框”不起作用。
为什么他不认识nodeName的“复选框”?还是我做错了?我已经在互联网上搜索了nodeName以找到一个复选框。但没有结果:/
对不起我的英语不好!
$('.management table.table-companies tbody tr').on('click touchstart',function(event) {
if(
event.target.nodeName != "BUTTON"
&& event.target.nodeName != "I"
&& event.target.nodeName != "CHECKBOX"
)
{
jmOpenRelatedContact($(this));
}
});发布于 2015-03-13 21:58:07
您应该使用event.target.type而不是event.target.nodeName作为输入。
见守则:
var ctype = document.getElementById("c").type;
document.write("type="+ctype)<input id="c" type="checkbox">
发布于 2015-03-13 21:48:42
如果允许单击非复选框的输入,则使用nodeName != "INPUT"是不正确的。在这种情况下,您可以使用getAttribute()来确定类型是否为“复选框”:
$('.management table.table-companies tbody tr').on('click touchstart',function(event) {
if(
event.target.nodeName != "BUTTON"
&& event.target.nodeName != "I"
&& !(event.target.nodeName == "INPUT" && event.target.getAttribute('type') == "checkbox")
)
{
jmOpenRelatedContact($(this));
}
});编辑:查看了RoliCo的答案,这是一个很好的答案。
发布于 2015-03-13 21:49:58
节点名是“输入”,因为复选框的定义如下:
<input type="checkbox" name="animal" value="Cat" />
^^^^^
We are using an input element.您可以通过提醒
event.target.nodeName自己看: 小提琴
https://stackoverflow.com/questions/29042454
复制相似问题