gpt4 book ai didi

javascript - 使用 javascript 设置鼠标焦点并将光标移动到输入末尾

转载 作者:行者123 更新时间:2023-12-02 22:23:48 25 4
gpt4 key购买 nike

这个问题已经以不同的形式提出,但我无法得到任何适合我的情况的答案。

我使用 vanilla javascript 将焦点设置在特定的输入字段上,这样当有人单击导航栏上的元素时,它会将焦点设置在输入字段上并将光标移动到那里。我尝试过使用 .focus()方法,但这不适用于此处。

为了提供一些上下文,我正在使用 Django 并实现模板继承

app.js

var newlsetter = document.querySelector('#newsletter');
newlsetter.addEventListener("click", activateNewsletterInput);
function activateNewsletterInput() {
document.querySelector('#sg_email').focus();
}

侧边栏.html

...
<li class="nav-item close_side" id="newsletter">
<a class="nav-link" href="#footer">Newsletter</a>
</li>
...

页脚.html

...
<form id="sg-widget" data-token="" onsubmit="return false;">
<label class="text-white mb-3">Receive our newsletter:</label>
<div class="input-group">
<input id="sg_email" type="email" name="sg_email" class="form-control pl-2 w-md-100 mb-sm-2" placeholder="E-mail" required="required">
<button type="submit" id="sg-submit-btn" class="btn px-4 w-md-100">
Subscribe
</button>
</div>
<div class="sg-response mt-2" id="sg-response"></div>
</form>
...

最佳答案

(() => {
const newsletter = document.querySelector('#newsletter');
const activateNewsletterInput = ({
target: targetElement
}) => {
if (targetElement.id === 'newsletter' || targetElement.id === 'linkNewsletter') {
document.querySelector('#sg_email').focus();
}
}
document.addEventListener("click", activateNewsletterInput, false)

})()
<body>
<li class="nav-item close_side" id="newsletter">
<a class="nav-link" id="linkNewsletter" href="#footer">Newsletter</a>
</li>
<form id="sg-widget" data-token="" onsubmit="return false;">
<label class="text-white mb-3">Receive our newsletter:</label>
<div class="input-group">
<input id="sg_email" type="email" name="sg_email" class="form-control pl-2 w-md-100 mb-sm-2" placeholder="E-mail" required="required">
<button type="submit" id="sg-submit-btn" class="btn px-4 w-md-100">
Subscribe
</button>
</div>
<div class="sg-response mt-2" id="sg-response"></div>
</form>
</body>

(() => {
const newsletter = document.querySelector('#newsletter');
const activateNewsletterInput = () => document.querySelector('#sg_email').focus();
newsletter.addEventListener("click", activateNewsletterInput, false)
})()
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>App</title>
</head>

<!-- Don't refer to your code before the body of the html -->

<body>
<li class="nav-item close_side" id="newsletter">
<a class="nav-link" href="#footer">Newsletter</a>
</li>
<form id="sg-widget" data-token="" onsubmit="return false;">
<label class="text-white mb-3">Receive our newsletter:</label>
<div class="input-group">
<input id="sg_email" type="email" name="sg_email" class="form-control pl-2 w-md-100 mb-sm-2" placeholder="E-mail" required="required">
<button type="submit" id="sg-submit-btn" class="btn px-4 w-md-100">
Subscribe
</button>
</div>
<div class="sg-response mt-2" id="sg-response"></div>
</form>
</body>
<!-- Reference your code after the body of the html -->

</html>
您肯定在绘制 HTML 之前引用了您的代码,因此它无法找到 HTML 控件并且不会链接焦点事件。尝试在绘制 HTML 后引用您的代码。

关于javascript - 使用 javascript 设置鼠标焦点并将光标移动到输入末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59132113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com