javascript - 使函数仅在事件/聚焦的输入/按钮/文本区域上工作的 jQuery 或 javaScript 语法是什么?

标签 javascript jquery function syntax webforms

我是一名初学者且对自己感兴趣的网络程序员。

我一直在测试、询问、重新测试、尝试、阅读 javaScript 中的不同功能解决方案,并将其形成在线表单,该表单将包含大量 <textarea>'s一旦我完成了。

对于当前的函数状态,我相当满意,这些函数基于几个 js 事件。示例代码如下(写得有趣,因此在论坛中更容易阅读,实际代码显然是一行):

<textarea
    data-id="0"
    class="classOne classTwo"
    id="dataInput_0"
    name="xInput_row_1"
        onFocus="functionOne();"
        onBlur="functionTwo();"
        onKeyUp="functionThree();">
</textarea>

我构建并测试了专门在 id="dataInput_0" 上工作的所有函数。使用getElementById 。示例:

var d = document.getElementById("dataInput_0");

所以我的问题是如何让函数触发其他 "dataInput" ID?

换句话说:

var d = document.getElementById('whichever dataInput that is active/focused');

谢谢!

最佳答案

使用当前代码的最简单方法是执行以下操作:

onFocus="functionOne(this);"

...然后定义你的函数:

function functionOne(el) {
   // el is the element in question, used e.g.:
   alert(el.name);
}

onFocus=... 中,浏览器将 this 设置为相关元素,以便您可以将其作为参数传递给您的函数。然后,您的函数只需直接使用它,而不必通过 getElementById()

但是既然您提到了 jQuery,您可以从 html 中删除内联 onFocus 和其他 onXYZ 处理程序,然后在 JS 中完成所有操作,如下所示:

$("textarea").focus(function() {
   // here this is the element in question, e.g.:
   alert(this.value);
});

这为页面上的所有文本区域定义了一个焦点处理程序 - 将其范围缩小到仅具有“classOne”类的文本区域,执行 $("textarea.classOne")。在函数中,this 指的是焦点元素。您可以使用 .blur()keyup() 方法为代码中显示的其他事件分配处理程序。

关于javascript - 使函数仅在事件/聚焦的输入/按钮/文本区域上工作的 jQuery 或 javaScript 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128072/

相关文章:

javascript - 随机顶部/左侧定位

javascript - ajax 请求获取 'canceled' 现在网站已上线

javascript - 如何在点击事件时重新初始化动态 flexslider?

javascript - 检测两个移动物体之间的碰撞

javascript - 当用户试图离开页面时,如何执行 javascript 函数?

javascript - 我可以重新使用 html5 canvas 元素的转换吗?

javascript - 我可以在 JavaScript 中判断访问者的区域设置是遵循美国风格还是世界其他地区的风格吗?

当鼠标悬停在一个列表元素上时,jQuery 使其他列表元素淡入淡出/变暗,我在那里 90%..?

c - Realloc和一个函数还是malloc和两个函数?

function - 为什么要做特殊形式?