jQuery:单击<form runat =“server”> </form>中的按钮时,函数不起作用

时间:2010-09-09 17:06:09

标签: asp.net jquery postback

使用jQuery,在(document).ready中,我为我的asp.net(aspx)页面的所有按钮分配了一个click函数。 当我单击外面的按钮时,该功能正常工作。 单击窗体中的按钮时,它不起作用。为什么呢?

这是我的default.aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="jQuery._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript">

        $(document).ready(function () {
            $("button").click(function () {
                $("input").before("ciao");
            });   
        });

    </script>
</head>
<body>

<button id="Button1">Button BEFORE Form</button>
<button id="Button2">Another BEFORE Form</button>

    <form id="form1" runat="server">


    <button id="btStart">Button in Form</button>
    <div>
    <input type="text" value="I like number 1" />
    <input type="text" value="Smile to number 2" />
    </div>
    </form>
</body>
</html>

我正在使用Visual Studio 2010.我也尝试过使用jQuery 1.4.2,同样的问题。

谢谢你让我知道,干杯。

2 个答案:

答案 0 :(得分:4)

由于您单击<form>中的按钮,因此会触发提交操作。尝试添加

return false;

$("input").before("ciao");

以防止与该点击事件相关的默认操作。

答案 1 :(得分:1)

它应该可以工作,但按钮只是提交和刷新,所以你没有注意到它。由于你使用asp.net,你只需使用asp:Button就可以做到:

<asp:Button ID="yourButton"
    OnClientClick="$('input').before('ciao'); return false;" Text="Test" />