onsubmit函数在具有runat = server属性时不会触发

时间:2014-05-29 11:08:35

标签: c# javascript asp.net webforms

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Register.aspx.cs" Inherits="Register" MasterPageFile="MasterPage.master" %>

<asp:Content ID="ContentPlaceHolder1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">


</asp:Content>

<asp:Content ID="ContentPlaceHolder2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">

<br />

<div id="signupform">

<form  class="signupform" name="formreg" runat="server" onsubmit="return valform()"> <br/>

<input dir="rtl" type="text" name="uname" class="uname"/> </br>

<input dir="rtl" type="text" name="fname" class="fname"/> </br>

<input dir="rtl" type="text" name="lname" class="lname"/> </br>

<input dir="rtl" type="password" name="pword" class="pword"/> </br>

<input dir="rtl" type="password" name="rpword" class="rpword"/> </br>

<input dir="rtl" type="text" name="mmail" class="mail"/> </br>

<input dir="rtl" type="text" name="rmail" class="rmail"/> </br>

<input dir="rtl" type="text" name="gil" class="gil"/> </br>

<input type="checkbox" name="anon" value="True" class="dropan"/></br>

<input type="submit" name="sub" class="subbutton" value=""/>

<%=registrationstatus %>
</form>

</div>

</asp:Content>

这是我的代码,我的问题是onsubmit =&#34; return valform()&#34;如果runat =&#34; server&#34;我的表单上的属性不会触发属性存在,他们不能一起工作请帮助我我无能为力这两个属性不能一起工作

2 个答案:

答案 0 :(得分:0)

这是因为你不能同时使用它们。如文档中所述 -

<input type="text" id="Textbox1" runat="server">
  

执行此操作将使您在创建网页并将其发送到客户端之前以编程方式访问服务器上的HTML元素。 HTML元素必须包含id属性。此属性用作元素的标识,使您可以按特定ID对元素进行编程。除此属性外,HTML元素还必须包含runat =&#34; server&#34;。这告诉处理服务器标签是在服务器上处理的,不应被视为传统的HTML元素。

以下是参考资料。

http://msdn.microsoft.com/en-us/library/aa478973.aspx 在 - 使用HTML服务器控件

部分下

因此,带有run='server'的HTML不会被视为普通的Html元素,因此将始终由服务器处理。如果要覆盖默认行为,则必须在浏览器中加载html后绑定javascripts,可能使用jQuery或类似的东西。使用jQuery这样的东西会有所帮助 -

$(function(){
    $("#formreg").submit(function(){
        return valform();
    });
});

答案 1 :(得分:0)

通过检查您的代码,我得出结论,您可能在母版页上使用了另一个表单标记,并且没有javascript问题。主页或内容页上只能存在一个表单标记(服务器端)。它们不能嵌套。如果要在两个表单标记上使用runat =“Server”属性,则会出现错误"A page can have only one server-side Form tag"。因此,从其中一个表单标记中删除runat="server"属性,onsubmit将开始触发。