【问题标题】:JavaScript error: Uncaught TypeError: a[b] is not a function [closed]JavaScript错误:未捕获的TypeError:a [b]不是函数[关闭]
【发布时间】:2016-07-29 14:42:10
【问题描述】:

在我的 C# Webforms 项目中,我有一个 RadDatePicker 控件集来运行 JavaScript 函数。每次我选择一个日期时,我都会收到这个 Javascript 错误:

未捕获的类型错误:a[b] 不是函数

这是我的代码。 JavaScript 位于具有控件的 ASPX 页面的顶部

function SetDateSession() {
    console.log('here');
}


<telerik:RadDatePicker ID="StartDatePicker" runat="server">
    <ClientEvents OnDateSelected="SetDateSession()" />
</telerik:RadDatePicker>

我在选择日期后收到错误,并且错误发生在控制台日志之前。

我不明白为什么这个非常简单的代码不起作用。如果我尝试从input 标记中使用onclick 调用该函数,它会起作用。

<input type="button" id="RepBtn" onclick="SetDateSession()" value="View" runat="server"/>

我已经将代码简化得如此之多,以至于我很难知道接下来要尝试什么。

答案摘要:

与 HTML 和 ASP.NET 不同,如果您使用 Telerik 的 OnClientClicked 并传递 JavaScript 函数,则不应提供括号。提供括号将导致函数在页面加载时触发,而不是在点击时触发。

例如,RadButton 会生成以下 HTML:

<a id="exampleBtn" class="RadButton RadButton_Office2010Silver rbSkinnedButton"
  href="javascript:void(0)">
    <input class="rbDecorated" type="submit" name="btnStandard_input" 
      id="btnStandard_input" value="Standard Button" />
    <input id="btnStandard_ClientState" name="btnStandard_ClientState"
      type="hidden" />
</a>     

这是一个带有提交类型的输入,当您刷新页面时,它会重新提交表单,运行您的 JavaScript 函数。

【问题讨论】:

  • 你用的是什么框架?您可以访问源地图吗?
  • 查看问题顶部的最新编辑。我对源地图一无所知
  • 我被否决了?我的问题有问题吗?
  • 不要将控制台输出作为屏幕截图,因为它无法使用搜索功能查找信息
  • @JoeW 谢谢。我包含图像以直观地表示错误在控制台中的外观。由于人们似乎不喜欢那样,我将其删除。

标签: javascript html webforms telerik


【解决方案1】:

在这么愚蠢的事情上浪费时间!基本上这个

&lt;ClientEvents OnDateSelected="SetDateSession()" /&gt;

应该是这样的

&lt;ClientEvents OnDateSelected="SetDateSession" /&gt;

吸取教训,Telerik!谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 2014-09-19
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多