我遇到了vb.net网页的问题,我通过在page_load中注释掉.Focus()来解决这个问题。但是,客户在下次发布之前不会收到此修订。
我的问题是,是否可以通过外部js文件使用jquery实现相同的结果。即。我想知道我是否可以通过使用某种jquery魔法来“绕过”page_load中的'.Focus()'行?
我猜答案是“不”,但我仍然充满希望! : - )
感谢您的时间。
答案 0 :(得分:0)
如果您拥有控件(或名称)的ID,则可以通过调用以下方式将焦点设置为:
$(document).ready(function(){
$('#elementId').focus();
// or
// $('input[name="elementName"]').focus();
}
这将改变重点是什么,而不是取消设定焦点
如果你知道你可以做的焦点元素的ID:
$(document).ready(function(){
$('#elementId').blur();
// or
// $('input[name="elementName"]').blur();
}
取消对焦。
您也可以这样做:
$(document).ready(function(){
$('input').blur();
}
如果您只想取消所有/任何输入的焦点
在我的测试中,这将覆盖asp.net设置焦点的尝试(阅读:asp.net将集中一件事,你的脚本将在之后关注另一件事,所以这里可能存在控制竞争,但至少在我的页面(asp.net c#)和chrome这个工作,以便jquery.focus最后运行,因此获胜:))
修改/更新:强> 如果控件获得焦点而不是焦点的问题,你可以覆盖在你的代码隐藏中调用.Focus()时asp.net使用的auto_focus函数。
对我而言,这有效:
WebForm_AutoFocus = function () { };
然而,这可能导致其他事情无效(我不知道除了从代码隐藏设置.Focus()之外,这个javascript函数是否用于其他事情,但它可能值得尝试。) 你还应该在你的代码中“迟到”设置它,例如:在asp.net运行时将WebForm_AutoFocus渲染到你的页面之后,我不知道这样做了。