【问题标题】:How can i make javascript work on asp.net control?如何使 javascript 在 asp.net 控件上工作?
【发布时间】:2013-02-22 11:37:59
【问题描述】:
<script type="text/javascript">
    $(document).ready(function () {
        $('input[name="time"]').ptTimeSelect();
    });
</script>

上面的脚本正在处理这个问题:

&lt;input name="time" value="" /&gt;&lt;/td&gt;

但没有在这方面工作......

&lt;asp:TextBox ID="time" name='time' runat="server"&gt;&lt;/asp:TextBox&gt;

【问题讨论】:

  • ASP.net 控件转换为 HTML 控件,因此请查看 HTML 源代码,看看有什么问题。 (我的猜测是因为你只使用“时间”的id 而不是name
  • 我用名字试了一下还是不行
  • 这个答案很可能也是您问题的解决方案:stackoverflow.com/a/6345700/79485 您需要使用 ClientID 属性。

标签: c# javascript jquery asp.net


【解决方案1】:

请使用以下代码

<script type="text/javascript">
$(document).ready(function () {
var id='<%=time.clientid%>'
    $('#'+id).ptTimeSelect();
});
 </script>

如果这不起作用,请告诉我。

【讨论】:

  • var id = '' CS1061: 'System.Web.UI.WebControls.TextBox' 不包含 'clientid' 的定义并且没有扩展方法 'clientid'可以找到接受“System.Web.UI.WebControls.TextBox”类型的第一个参数(您是否缺少 using 指令或程序集引用?)
  • 似乎您在服务器端代码中使用了 c#。请将 clientid 替换为 ClientID,因为它区分大小写。
  • 它工作了,但你能解释一下代码吗,我对 javascripts 或 jquery 一无所知,如果我有多个文本框,我是否必须为每个文本框复制粘贴
  • ASP.net 会根据父控件的名称动态生成 ID,因此出现在 aspx 中的 id 并不总是与在浏览器中生成的相同。您可以使用 control.ClientID 找出将由框架生成的 ID。要使用 jquery 查找此元素,我们需要在生成的 id 之前添加 # 符号。
  • 你可以使用类名,如果你想用可能的文本框实现相同的 jquery 功能,比如 $(document).ready(function () { $('yourclassname').ptTimeSelect(); }); 您需要为每个要调用 jquery 函数的文本框设置相同的类名。
【解决方案2】:

我对 ASP.NET 的记忆是,它会修改元素的 ID 和名称,以确保它始终是唯一的。 &lt;asp:TextBox&gt; 的最终结果可能类似于:

<input name="ctr_0102_time" />

最好的办法是在活动页面上检查元素的来源以确定它具有哪些属性。如果它确实有一个随机标识符,那么您可能应该将它基于一个特定的类:

<input class="time" />
<asp:TextBox CssClass="time"></asp:TextBox>

$('input.time') ...

另一个可能导致此问题的原因是回传。 ASP.NET 中的回发不会重新准备文档,它们只是重新加载页面。而不是使用$(document).ready() 使用:

function pageLoad() { ... }

【讨论】:

    【解决方案3】:

    试试这个:

    <script type="text/javascript">
        $(document).ready(function () {
            $('[id$=time]').ptTimeSelect();
        });
    </script>
    

    【讨论】:

    • CS1061:“System.Web.UI.WebControls.TextBox”不包含“clientid”的定义,并且没有接受“System.Web.UI”类型的第一个参数的扩展方法“clientid”。可以找到 WebControls.TextBox'(您是否缺少 using 指令或程序集引用?)
    • 我的解决方案没有使用clientid,您的代码中可能还有其他错误。
    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多