如何在Form外提交表单,并能执行onsubmit事件

代码如下,但 onsubmit 不执行:

<script. type="text/javascript">
    function validate() {
        if ($("#name").val().length == 0)
            ;
    }
</script>
<form. id="form1" action="#" nsubmit="validate()">
    <label for="name">姓名</label>
    <input id="name" type="text" />
</form>
<div>此处很多内容,可能包含其它表单</div>
<button nclick="$('#form1').submit()">提交</button>

有些onsubmit是动态添加上的,如ASP.net MVC的验证:
http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
如 果验证不通过,就不提交。

 

  • admin - 1年前

    解决一:代码如下

    <script. type="text/javascript">
    function validate() {
    if ($("#name").val().length == 0){alert("input is empty");return false;}
    }
    </script>
    <form. id="form1" action="#" nsubmit="return validate()">
    <label for="name">姓名</label>
    <input id="name" type="text" />
    <input type="submit" value="提交">
     </form>
    <div>此处很多内容,可能包含其它表单</div>
    

    解决二:代码如下

     

    <script. type="text/javascript">
    function validate() {
    if ($("#name").val().length == 0)
    ;
    }
    </script>
    <form. id="form1" action="#" >
    <label for="name">姓名</label>
    <input id="name" type="text" />
     </form>
    <div>此处很多内容,可能包含其它表单</div>
    
     <button nclick="validate();">提交</button>
    

     

     

    分析你代码的原因,你代码中在form中本身加入了一个 onsubmit方法,而在下面又使用jQuery中来提交这个form表单,这就相当于这个form添加了两个onsubmit方法。而在一般情况中, 对同一个标签使用两个方法会有方法覆盖,此时就会依据浏览器对事件处理的不同来显示不同的表象,这里不做细说。具体的可以私下交流...