JQuery 选择器在 ASP.NET 网络表单中的错误控件中激活

Posted

技术标签:

【中文标题】JQuery 选择器在 ASP.NET 网络表单中的错误控件中激活【英文标题】:JQuery selector activating in the wrong control in ASP.NET webforms 【发布时间】:2014-09-01 18:36:01 【问题描述】:

因此,在这个母版页站点中,我在母版页中包含以下内容,以便在其 id 中包含“日期”一词的所有文本框中启用数据选择器

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="Stylesheet" type="text/css" />

<script type="text/javascript">

    function pageLoad(sender, args) 
        $(document).ready(function () 


            $("[id*='Date']").datepicker(
                showOn: 'button',
                buttonImageOnly: true,
                buttonImage: 'http://jqueryui.com/resources/demos/datepicker/images/calendar.gif'
            );
            $("[id*='Date']").click(function () 
                $("[id*='Date']").datepicker('show');
            );
        );
    
</script>

这在只有一个这样的文本框的页面上很好用。但是在具有多个日期时间文本框(txtStartDate 和 txtCompletionDate)的页面上,如果您单击第一个,则第二个将获得焦点并随后接收从日历弹出窗口中选择的值。如果我单击文本框旁边的日历图标或选择第二个文本框,则不会发生此问题。如果我在选择器中明确声明文本框 ID 的全名,也不会发生此问题。

【问题讨论】:

你为什么在函数中使用$(document).ready(function () 也分享你的html代码 @Satpal 好问题,我最初这样做是为了让 jquery 代码也可以在回发上工作,但看起来我可以删除 $(document).ready 函数,这仍然可以正常工作,谢谢! 【参考方案1】:

你需要使用this,它指的是在事件处理程序中调用事件的元素。

使用

$("[id*='Date']").click(function () 
    $(this).datepicker('show');
);

而不是

$("[id*='Date']").click(function () 
    $("[id*='Date']").datepicker('show');
);

【讨论】:

快速正确的回复。有点傻,我怎么没想到,但谷歌也没有出人意料地提供帮助

以上是关于JQuery 选择器在 ASP.NET 网络表单中的错误控件中激活的主要内容,如果未能解决你的问题,请参考以下文章

使用引导日期选择器在 ASP.net 核心中发布本地化的日期格式

Jquery 选择器在引导模式下不起作用(使用 codeigniter 加载表单)

在 asp.net 文本框中导入 Jquery 日期值失败

未捕获的类型错误:$(...).datepick 不是 asp.net 中 jQuery datetime 中的函数

JQuery Mobile Select 未从 asp.net Web 表单中正确格式化

如何使用asp.net按钮通过jquery进行验证然后进入后台代码web表单