首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >event.target.nodeName !=“复选框”

event.target.nodeName !=“复选框”
EN

Stack Overflow用户
提问于 2015-03-13 21:43:15
回答 3查看 6.4K关注 0票数 1

我在试着让一个函数正常工作。当单击表中的一行时,会出现一个弹出,其中显示的信息(来自单击的行)自动填充到文本字段中。这部分工作得很完美。

我现在要做的是,只有在行中没有单击按钮或复选框时才调用该函数。按钮部件正常工作,但复选框无效。

看来event.target.nodeName !=“复选框”不起作用。

为什么他不认识nodeName的“复选框”?还是我做错了?我已经在互联网上搜索了nodeName以找到一个复选框。但没有结果:/

对不起我的英语不好!

代码语言:javascript
复制
    $('.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));

        }
    });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-13 21:58:07

您应该使用event.target.type而不是event.target.nodeName作为输入。

见守则:

代码语言:javascript
复制
var ctype = document.getElementById("c").type;
document.write("type="+ctype)
代码语言:javascript
复制
<input id="c" type="checkbox">

票数 3
EN

Stack Overflow用户

发布于 2015-03-13 21:48:42

如果允许单击非复选框的输入,则使用nodeName != "INPUT"是不正确的。在这种情况下,您可以使用getAttribute()来确定类型是否为“复选框”:

代码语言:javascript
复制
$('.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的答案,这是一个很好的答案。

票数 1
EN

Stack Overflow用户

发布于 2015-03-13 21:49:58

节点名是“输入”,因为复选框的定义如下:

代码语言:javascript
复制
<input type="checkbox" name="animal" value="Cat" />
^^^^^
We are using an input element.

您可以通过提醒

代码语言:javascript
复制
event.target.nodeName

自己看: 小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29042454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档