通过事件目标,我怎么知道它是复选框还是无线电

By event.target, how I know that it is checkbox or it is radio?

本文关键字:复选框 无线电 我怎么知道 事件 目标      更新时间:2023-09-26

在我的html中:

<input type="checkbox" name="select">
<input type="radio" name="select">

由于某些逻辑原因,名称属性相同

在我的 JS 中

我写下面的代码:

$('input[type="checkbox"],input[type="radio"]').on("change",function(event){
    console.log(event.target.nodename);
    // on both cases it show "INPUT"
    }
    }); 

如何知道我点击了复选框或单选按钮?

.nodeName给出了使用的html标签,因此您必须使用.type来获取那里的节点类型。

试试这个:

console.log(event.target.type);

演示

对于那些寻找纯JavaScript方式的人来说,这是event.target.tagName

该属性是元素类型的大写字符串,如"A"、"UL"、"LI"等。

console.log($(event.target).is(':radio'));
console.log($(event.target).is('[type="radio"]'));

你可以改用event.target.getAttribute('type')

尝试使用 attr() 像这样,

console.log($(this).attr('type'));// checkbox or radio

法典

$('input[type="checkbox"],input[type="radio"]').on("change", function (event) {
    console.log($(this).prop('tagName'));// INPUT
    console.log($(this).attr('type'));// checkbox or radio
});

对于带有 jQuery 的节点类型,您可以使用:

  • $(event.target).attr('type')
  • event.target .type
$("SELECTOR").click(function (event) {
var idEventTarget = $(event.target).attr('id');
console.log($(event.target).attr('type'));
console.log(event.target.type);
});
如果事件传递到 XMLHttpRequest 的进度或错误事件处理程序,或者 IDB

成功或错误事件处理程序,则目标将是 XMLHttpRequest 或 (IDB Request?)。不会有 getAttribute 或 nodeName 属性。

虽然必须有更好的方法,但这将获得事件目标的名称:targetname = Object.getPrototypeOf(ev.target).constructor.name。

例如,在 http 请求的情况下,它返回"XMLHttpRequest"。

你可以试试:

event.target.checkBoxName.checked

其中复选框 html 如下所示:

<input type="checkbox" name="checkBoxName">

它将返回真或假。

var isChecked = event.target.checkBoxName.checked;

您可以使用

function test(e)
{
   var eve = e || window.event;
   var ele = eve.target || eve.srcElement;
   switch(ele.getAttribute('type'))
   {
     case "radio" : //do whatever
     case "checkbox" : //do
   }
}