什么是jQuery或javaScript语法使函数只在活动/聚焦输入/按钮/文本区域工作?

什么是jQuery或javaScript语法使函数只在活动/聚焦输入/按钮/文本区域工作?,javascript,jquery,function,syntax,webforms,Javascript,Jquery,Function,Syntax,Webforms,我是一个初学者和自利的网络编码器 我一直在测试、询问、重新测试、尝试、阅读javaScript中的不同功能解决方案,并将其转换为一个在线表单,一旦我完成,该表单将包含大量的 我对函数的当前状态相当满意,这些函数基于几个js事件。示例代码可能是(写得很有趣,所以在论坛上更容易阅读,实际代码显然只有一行): 因此,我的问题是如何使函数触发其他“dataInput”id 换言之: var d = document.getElementById('whichever dataInput that is

我是一个初学者和自利的网络编码器

我一直在测试、询问、重新测试、尝试、阅读javaScript中的不同功能解决方案,并将其转换为一个在线表单,一旦我完成,该表单将包含大量的

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

因此,我的问题是如何使函数触发其他
“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);
});

这为页面上的所有textarea定义了一个焦点处理程序——将其缩小为类为“classOne”do
$(“textarea.classOne”)
的textarea。在函数
中,此
指的是聚焦元素。您可以使用
.blur()
keyup()
方法为代码中显示的其他事件分配处理程序。

我的建议是使用属性选择器
$('input[id^=“dataInput”]”)
,并使用jQuery的
处理程序如下:

$('input[id^="dataInput_"]').on({
    focus: function{
       functionOne($(this));
    },
    blur:  function(){
       functionTwo($(this));
    },
    keyup: function(){
       functionThree($(this));
    }
});
以及功能:

functionOne(obj){
   console.log(obj.val());
}
functionTwo(obj){
   console.log(obj.val());
}
functionThree(obj){
   console.log(obj.val());
}

“实际代码显然只有一行”-请注意,用这样的换行符格式化实际代码是没有问题的。这就是你想要的吗?@DavidThomas,在问题的标题OP中提到了
jQuery
?@Sheikh:啊,是的:我忘了看标签的标题。标记已编辑您可能需要仔细检查
on
语句中的语法:它正在调用这些函数,而不是将它们指定为处理程序。@nnnnnn&Jai-我有更多与此问题相关的问题,我想给出更多的示例代码。“最好是开始一个新问题还是编辑原始问题?”他们想知道——除非附加问题与原始问题密切相关,否则我可能会开始一个新问题。(但这只是我的问题。)jQuery解决方案对于onFocus和onBlur函数非常有效,谢谢@nnnn!我相信只要花一点时间,我就可以使用onKeyUp函数。再次感谢您耐心的回复。还要感谢@Andre等人!
$('input[id^="dataInput_"]').on({
    focus: function{
       functionOne($(this));
    },
    blur:  function(){
       functionTwo($(this));
    },
    keyup: function(){
       functionThree($(this));
    }
});
functionOne(obj){
   console.log(obj.val());
}
functionTwo(obj){
   console.log(obj.val());
}
functionThree(obj){
   console.log(obj.val());
}