【问题标题】:Setting default focus in mvc form using jQuery?使用jQuery以mvc形式设置默认焦点?
【发布时间】:2014-02-25 16:03:00
【问题描述】:

我的页面上有多个标签。每个选项卡都使用局部视图加载。我想让默认焦点转到每个页面上的第一个“文本框”。这是我遇到的问题。我添加了这个简单的代码:

<script type="text/javascript">
    $(document).ready(function () {
        $(function () {
            $("input[type=text]").first().focus();
        });
    });
</script>

我将此代码添加到布局母版页中,认为它只是默认为每个页面上的第一个文本框。然而事实并非如此。它将默认为加载的第一个选项卡上的第一个字段,但是当我导航到新选项卡时,没有焦点,当我导航回第一个选项卡时,仍然没有焦点。我还为每个部分添加了这个简单的代码,设置焦点没有运气。我也试过删除“document.ready”部分,没有运气。我已经尝试将其添加到每个单独的页面,以两种方式描述,但没有运气。有什么想法或想法吗?

【问题讨论】:

  • 您发布的代码正在处理为“准备好文档,准备好文档,关注第一个文本输入”。您只需要其中一种准备好的方法:$(document).ready(function () { $('input[type=text]').first().focus(); });
  • 这仍然不能解决选项卡之间导航的问题。使用您或我的代码,它将第一个文本框聚焦在选项卡 1 上,但是当我单击选项卡 2 时,它会失去焦点,并且永远不会重新获得焦点。如上所述,标签是使用部分视图加载的,我什至尝试将代码添加到部分视图中,但没有成功。
  • 标签实际上是新页面,还是在同一页面上的客户端处理切换?我想问一个更好的方法...当您转到新标签时,网址会改变吗?
  • 如果你想将第一个文本框聚焦在每个选项卡上,你还需要处理选项卡切换事件来设置它
  • 网址不变。选项卡切换是在客户端处理的,因为没有调用加载这些选项卡的方法。

标签: jquery focus


【解决方案1】:

您发布的代码将只运行一次,并将选择他将遇到的第一个输入(文本类型)。 你需要:

1) 为每个标签内容设置一个父 div 例如:

<div id='tab1Content'>
//you'r tab Content
</div>

2) 绑定选项卡开关的触发器,在该委托中,您需要确定哪个选项卡具有焦点,而不是以这种方式使用您的原始代码:

$('#tab1Content').find("input[type=text]").first().focus();

id ('#tab1Content') 将根据焦点选项卡而改变。

【讨论】:

    【解决方案2】:

    实际上,在阅读了标签页的 jQuery API 文档之后。我已经找到了使用“激活”事件的解决方案。所以代码看起来类似于:

     $( ".selector" ).tabs({
    activate: function( event, ui ) {}
    });
    

    然后绑定看起来像这样:

    $( ".selector" ).on( "tabsactivate", function( event, ui ) {} );
    

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多