检查onclick事件触发的表单元素

时间:2014-09-07 19:16:54

标签: javascript jquery forms dom

我在网页中有一个js函数,用于捕获点击位置。如果页面包含表单元素,我必须以一种可识别的方式实现它,如果是这样,请检查我正在记录的点击是否是随机表单元素。 我起来检查表单并学习它的元素,但我不知道如何检查单击是否在单个元素上进行:

$('*').on('mousedown', function (e) {
 // make sure the event isn't bubbling
 if (e.target != this) {
    return;
 }
 // do something with the click somewhere
 // for example, get the coordinates:
 x = e.pageX;
 y = e.pageY;
 pa = $(location).attr('href');
 //Window dimension
 var width = $(window).width();
 //var width = $getWidth();
 var height = $(window).height();

 //Check if page contain a form
 var elementF =  document.querySelectorAll('form');
 var fname = '';
 var elements = '';
 for (var i=0; i<elementF.length; i++){
  fname = elementF[i].id;
  elements = document.forms[fname].elements;
  for (x=0; x<elements.length; x++){
    //Now i need to check if element is clicked or not
  }
}

2 个答案:

答案 0 :(得分:3)

您在此处所做的是将mousedown事件绑定到页面上的每个元素。这将是资源密集型的,不应该是必要的。此外,由于它在任何地方都有约束力,if (e.target !== this){ return; }确实可以防止它在某件事情上被砸了一百万次,但也可以防止它冒泡。只需让它冒泡,然后使用e.targete.currentTarget来分辨内容。不应该有$('*').on("mousedown")

的任何理由

为什么你不能这样做?

$("form").on("click", function(e){
    // e.currentTarget will be the form element capturing the click

    console.log( $(e.currentTarget).html() );

    // e.target will be whatever element you clicked on
    // so you can do whatever you want with it

    console.log( $(e.target).text() );

    // All your handler code here
});

一些可能有用的东西

答案 1 :(得分:1)

尝试

$('*').on('mousedown', function (e) {
  var elementClicked = e.target.nodeName;
  console.log("element: " + elementClicked)
})