在页面加载RadButton Onclientclicked触发

Sta*_*ser 3 c# asp.net telerik

当我使用telerik radbutton时

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

刷新页面后,总是SaveIt()函数开始工作.但; 当我使用按钮时,它只在用户点击它时才有效.

<button type="button" onclick="SaveIt()">Stackoverflow</button>
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?

kas*_*apa 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>
Run Code Online (Sandbox Code Playgroud)

如您所见,生成的类型是"提交" - 这意味着它将表单提交给服务器.因此,如果您刷新它将尝试再次重新发送该表单.我无法理解的是 - 你使用过ajax面板.因为如果您使用了ajax面板,则单击按钮会触发ajax发布到服务器,并且当您刷新页面时,就好像它是第一次而不是回发一样.

正常的html不适用于表单提交.它只是用于在客户端触发click事件.

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

OnClientChecked="<js function name>" 
Run Code Online (Sandbox Code Playgroud)

注意:您应该只提供没有括号的函数名称,即(和).

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

所以这是正确的代码:

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

<script>
    function func() {
        alert("clicked");
    }
</script>
Run Code Online (Sandbox Code Playgroud)

希望这能回答你的问题.