我的头衔可能并不能真正表达我想要达到的目标,所以我希望读者可以先回答我的问题。 我的页面上有很多输入,具有不同的id,我想获得用户关注的特定输入的ID,并在此输入失去焦点时触发事件。我可以通过显式声明ID并将onblur事件处理程序附加到它来实现这一点,但这将导致编写大量代码,因为我在同一页面上有太多输入。现在我有以下代码
var \$Title = $('#draft-product_title')
\$Title.on('blur',function(event){
eventId = event.target.id;
draftEventHandler(\$Title,eventId);
});
这是我的输入之一,我有更多的30输入所以我必须复制它30次这是如此疯狂我需要一种方法使它如此灵活,我试过这个但没有运气
var \$selectorId;
$('body').on('click',function(event) {
\$focusElementId = document.activeElement.id;
\$selectorId = ('#'+\$focusElementId)
console.log(\$selectorId);
});
\$selectorId.on('blur',function(event){
eventId = event.target.id;
draftEventHandler(\$selectorId,eventId);
});
但是这个代码错误选择器id没有定义,而是定义了console.log()
任何有关如何使这项工作的帮助,也对任何其他想法开放,并且
答案 0 :(得分:2)
使用
:input
选择器选择所有input
元素
this
中的 event-handler
上下文将element
event
invoked
因此this.id
将返回id
属性element
""
或$(':input').on('focus', function() {
console.log(this.id);
}).on('blur', function() {
console.log(this.id);
});
(空)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form action="action_page.php">
First name:
<br>
<input type="text" id="name" value="Mickey">
<br>Last name:
<br>
<input type="text" name="lastname" id="lastname" value="Mouse">
<br>
<br>
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<input type="submit" value="Submit">
</form>
&#13;
ALTER TABLE Persons DROP PRIMARY KEY ;
&#13;
答案 1 :(得分:0)
您可以将事件附加到焦点元素。或者只是使用:focus
选择器获取它。
(function() {
$(document).on("click", ":focus", function() {
console.log(this.id);
})
})();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="id1" type="test1" value="id1">
<input id="id2" type="test2" value="id2">
&#13;