3

当我使用 Telerik radbutton

<telerik:RadButton ID="RadButton1" runat="server" Text="Stackoverflow" 
Skin="Default" OnClientClicked="SaveIt()" CommandArgument="Edit">
</telerik:RadButton>

刷新页面后,总是 SaveIt() 函数开始工作。但; 当我使用按钮时,它仅在用户单击它时才起作用。

<button type="button" onclick="SaveIt()">Stackoverflow</button>

它们之间有什么区别?

4

3 回答 3

5

这里有几件事。RadButton 和普通 HTML 按钮的区别如下:

使用 RadButton 时,生成的客户端 HTML 如下:

<a id="btnStandard" 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>

如您所见,生成的类型是“提交” - 这意味着它将提交表单到服务器。因此,如果您刷新它将尝试再次重新发送表单。我不明白的是 - 你用过 ajax 面板吗?因为如果您使用过 ajax 面板,单击按钮会触发 ajax 发布到服务器,当您刷新页面时,它就像是第一次而不是回发一样。

普通的 html 不适用于表单提交。它只是用来触发客户端的点击事件。

话虽如此 - OnClientChecked 的签名如下:

OnClientChecked="<js function name>" 

注意:您应该只提供不带括号的函数名称,即 ( 和 )。

在您的情况下,因为您提供了括号 - 当按钮被初始化时,与其关联的客户端函数正在执行,并且您的 Javascript 代码在运行时运行。

所以这是正确的代码:

<telerik:RadButton runat="server" Text="test" OnClientClicked="func" />

<script>
    function func() {
        alert("clicked");
    }
</script>

希望这能回答你的问题。

于 2012-08-08T06:35:27.063 回答
0

RadButton 没有 onClick 方法而不是 OnClientClicked 吗?

于 2012-08-08T05:23:40.587 回答
0

实际上,我也遇到过这种行为。刷新页面确实意味着回发作为发布此声明的所谓答案的人。为 onclientclicked 事件指定的 js 函数在页面加载时触发。我注意到答案只是简单地重新陈述了显而易见的内容以及原始发布者发布的代码不起作用并声称它可以在没有解决加载时触发函数的问题的情况下简单地假设“刷新”相当于回发。

我只是想我会提出有效的分析,并简单地指出,如果有人发布了某些内容并且他们的朋友将其作为答案进行宣传,这并不意味着它是正确的。

于 2012-11-27T18:59:44.257 回答