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

标签 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
  }
}

最佳答案

您在这里所做的是将 mousedown 事件绑定(bind)到页面上的每个元素。这将是资源密集型的并且不是必需的。另外,由于它到处都是绑定(bind)的,所以 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
});

一些可能有用的东西

关于javascript - 检查 onclick 事件触发的表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713853/

相关文章:

JavaScript AJAX : Stop endless scroll when request returns empty

javascript - 使用缩进按钮调整 TD 内容填充无法正常工作

javascript - 为什么在给这个图像着色时使用保存和恢复?

javascript - 无法将数组值传递给单击函数

jquery - 将 jqplot 或任何其他 jquery 绘图旋转 90 度

jquery - 单击后禁用提交按钮并在几秒钟后再次启用它

JavaScript - 仅在范围内验证数字

javascript - 拒绝vue输入中的非数字

html - 从右到左开始表格单元格

javascript - 按钮选择和取消选择所有不起作用的复选框