2013-09-11 5 views
0

У меня есть веб-формы, которые имеют TextBox с Validator:Как предотвратить двойную форму формы в форме, которая имеет валидатор?

<script src="../script/jquery-2.0.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("form").submit(function() { 
      $('input[type=submit]', this).attr('disabled', 'disabled'); 
     }); 
    }); 
</script> 
<form id="form1" runat="server"> 
    <asp:RequiredFieldValidator ID="v" runat="server" ControlToValidate="name" ErrorMessage="Required"></asp:RequiredFieldValidator> 
    <asp:TextBox ID="name" runat="server"></asp:TextBox> 
    <asp:Button ID="submit" runat="server" Text="Go" CausesValidation="true" /> 
</form> 

Я хочу, чтобы отключить представить button, когда форма будет отправлена, но этот код также отключить отправить button при TextBox не действует на Validator (пусто).

Я хочу способ для всех валидаторов ASP.NET, а не только RequiredFieldValidator.

Как я могу отключить отправку button только в реальном?

ответ

1

Проверить, является ли глобальная Page_IsValid переменная установлена ​​в true перед отключением кнопки отправки :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %> 
<!DOCTYPE html> 
<html> 
<head runat="server"> 
    <title></title> 
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("form").submit(function() { 
       if (Page_IsValid) 
        $('input[type=submit]', this).prop('disabled', true); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:RequiredFieldValidator ID="v" runat="server" ControlToValidate="name" ErrorMessage="Required"></asp:RequiredFieldValidator> 
     <asp:TextBox ID="name" runat="server"></asp:TextBox> 
     <asp:Button ID="submit" runat="server" Text="Go" CausesValidation="true" /> 
    </form> 
</body> 
</html> 
+0

Большое спасибо, но это не отключает ничего в FireFox. –

+0

@MajidR: Он работает для меня в Firefox 22.0. Убедитесь, что вы не работаете с кэшированной страницей. Кроме того, он работает для вас в IE или Chrome? –

+0

работает только в опере! –

0
$(document).ready(function() { 
     $("form").submit(function (e) { 
     if($.trim($('#<%=name.ClientID%>').val()) !=''){ //if textbox not empty 
      $('input[type=submit]', this).attr('disabled', 'disabled'); 
     }else{ 
      e.preventDefault(); 
     } 
     }); 
    }); 

event.preventDefault

вы можете использовать .prop()

$('input[type=submit]', this).prop('disabled', true); 
+0

Я хочу, чтобы все '' Validator '' не только 'RequiredFieldValidator'! –

0
protected void submit_Click(object sender, EventArgs e) { 
    if (name.Text != String.Empty) { 
     submit.Enabled = false; 
    } else { 
     submit.Enabled = true; 
    } 
} 

этот код без Java Script

+0

этот код ему нужно отправить. –

Смежные вопросы