使用ajax将html嵌入当前页面并设置焦点时没有焦点效果

Posted

技术标签:

【中文标题】使用ajax将html嵌入当前页面并设置焦点时没有焦点效果【英文标题】:There's no focus effect when using ajax to embed html into current page and set focus 【发布时间】:2022-01-22 13:11:47 【问题描述】:

我正在开发 asp.net core 并在 Edge 浏览器中测试(版本:96.0.1054.62)。

我发送 ajax 请求并获取 html 内容,然后我将 html 块嵌入到当前页面中。之后,我将重点放在 html 块中的 html 元素上。但是调用setFcous函数时看不到焦点效果。

一般来说,当我将焦点放在一个元素上时,它会像下面一样被黑色边框包裹起来。

以下是代码示例:

索引.cshtml

<form>
    <input id="btnDelete" value="Delete" type="button" style="width: 60px" />
</form>

<div id="divInputs" style="display: none">
</div>

<script type="text/javascript">
function setFocus(elementId) 
    var obj = document.getElementById(elementId);
    if (isDefine(obj)) 
        console.log(obj);
        obj.focus();
    


function isDefine(obj) 
    return !(obj == undefined || obj == null)


$(function () 
    $('#btnDelete').on('click', function () 
        $.get('/Home/Delete?', (data) => 
            $('#divInputs').html($(data));
            $('#divInputs').show();
            setFocus('btnAction');
        );
    );
);
</script>

HomeController.cs

public IActionResult Delete()

    return View("Delete");

删除.cshtml

@
Layout = null;


<div>
    <input id="btnAction" class="button" type="button" value="Delete"/>
    <input id="btnCancel" class="button" value="Cancel" type="button"/>
</div>

【问题讨论】:

我已经在 EdgeChromeFireFox 中尝试过,但它们不起作用。也许这些浏览器不支持这种风格,你可以写一个css来实现这种风格。 【参考方案1】:

焦点设置在您的代码中的按钮上。您可以通过将以下样式添加到页面来对其进行测试。

<style>
    input:focus 
        background-color: yellow;
    
</style>

【讨论】:

谢谢。但是为什么它没有像正常效果那样包裹它的黑色边框呢? 我不确定。但是,如果您应用引导样式 - 您将能够看到按钮边框。

以上是关于使用ajax将html嵌入当前页面并设置焦点时没有焦点效果的主要内容,如果未能解决你的问题,请参考以下文章

在页面加载时将焦点设置在 HTML 输入框上

如何在没有 Javascript 的情况下将焦点设置到页面顶部?

如何将焦点设置到独立于 id 的 HTML 表单中的第一个输入元素?

使用 AJAX 嵌入视图

更新谷歌地图会从表单元素中窃取焦点

css嵌入没有滚动条