2010-05-26 37 views
20

Làm cách nào để đặt lại kiểm soát xác thực asp.net qua JavaScript? Mẫu mã hiện tại xóa văn bản thông báo lỗi nhưng không đặt lại điều khiển xác thực cho lần gửi biểu mẫu tiếp theo.Đặt lại kiểm soát xác thực asp.net qua javascript?

var cv= document.getElementById("<%= MyValidationContorl.ClientID %>"); 
cv.innerHTML = ''; 

Cập nhật:

Đây là mẫu mã đầy đủ các biểu mẫu. Tôi dường như không thể có được điều khiển xác nhận bắn ra trên một trình dạng:

function ClearData() { 
    var cv = document.getElementById("<%= MyValidationContorl.ClientID %>"); 
    cv.innerHTML = ''; 
} 

<html> 
    <form> 
     <asp:TextBox id="MyTextControl" runat="server" /> 
     <asp:CustomValidator ID="MyValidationContorl" runat="server" /> 
     <input type="button" onclick="javascript:ClearCCData(); return false;" runat="server" /> 
    </form> 
</html> 
+0

Ý anh là gì bằng cách thiết lập lại? – azamsharp

+0

@azamsharp - Tôi có nghĩa là để cho phép bắt đầu quá trình xác nhận từ đầu. –

Trả lời

-1

Dưới đây là code để thiết lập lại tất cả các xác nhận

function CleanForm() { 
    document.forms[0].reset(); 

    for (i = 0; i < Page_Validators.length; i++) { 
     Page_Validators[i].style.visibility = 'hidden'; 
    } 

    return false; 
} 

hoặc một duy nhất:

document.getElementById("<%= MyValidationContorl.ClientID %>").style.visibility 
= 'hidden'; 
+0

Điều này không hữu ích. –

+0

oops xin lỗi bỏ lỡ đọc mục tiêu của bạn – Glennular

+0

Nó ẩn các điều khiển xác thực, nhưng khi tôi thử gửi biểu mẫu khác, nó không kích hoạt lại các điều khiển xác thực. –

38

trang xác nhận được kích hoạt mỗi lần bạn đăng một bài đăng, có vẻ như vấn đề là bạn đang xóa nội dung của trình xác thực cv.innerHTML = '';, theo cách này, thư xác thực của bạn bị mất vĩnh viễn và bạn sẽ nghĩ rằng việc xác thực không kích hoạt lại.

và cho câu trả lời @Glennular, mã không xử lý các validator Display tài sản, nếu thiết lập của nó để Dynamic validator sẽ được toggled sử dụng validator.style.display, nhưng nếu thiết lập của nó để None hoặc Inline sau đó validator.style.visibility bất động sản sẽ được sử dụng để thay thế.

của nó tốt hơn để sử dụng asp.net ValidatorUpdateDisplay thay vào đó,

<script type="text/javascript"> 
    function Page_ClientValidateReset() { 
     if (typeof (Page_Validators) != "undefined") { 
      for (var i = 0; i < Page_Validators.length; i++) { 
       var validator = Page_Validators[i]; 
       validator.isvalid = true; 
       ValidatorUpdateDisplay(validator); 
      } 
     } 
    } 
</script> 

Cập nhật: Đặt lại Validation Tóm tắt

<script type="text/javascript"> 
function Page_ValidationSummariesReset(){ 
    if (typeof(Page_ValidationSummaries) == "undefined") 
      return; 
    for (var i = 0; i < Page_ValidationSummaries.length; i++) 
      Page_ValidationSummaries[i].style.display = "none"; 

} 
</script> 
+0

Chức năng javascript này hoạt động tuyệt vời !!! –

+0

Hi @MK .. chức năng của bạn hoạt động tuyệt vời .. Nó đặt lại tất cả các trình xác nhận như tôi muốn nhưng nó không đặt lại bản tóm tắt xác thực. Bạn có bất kỳ mã nào có thể thực hiện công việc đó không? Cảm ơn rất nhiều. Tôi đang rất cần nó. – lawphotog

+0

@LaurenceNyein Tôi đã cập nhật câu trả lời để bao gồm phương pháp tóm tắt xác thực đặt lại. –

0

Hãy thử đoạn mã sau đây:

$("#<%= txtUserSettingsEmailRequiredValidator.ClientID %>").css("display", "none"); 

tôi hy vọng điều này sẽ hoạt động khi nó hoạt động r tôi. :)

13

Cài đặt này đặt lại tất cả trình xác thực trong tất cả các nhóm xác thực.

<script type="text/javascript"> 
    Page_ClientValidate(''); 
</script> 
+3

hoàn hảo, chính xác những gì tôi cần – setebos

+2

Nếu bạn sử dụng điều này, hãy đảm bảo bạn đã xác định 'ValidationGroup' cho tất cả các trình xác nhận ... nếu không nó sẽ kích hoạt trình xác nhận hợp lệ mà không có nhóm. Nếu bạn thực sự lười và không muốn xác định nhóm xác nhận cho mọi phần tử, bạn có thể tạo một chuỗi ngẫu nhiên sẽ không được sử dụng làm nhóm xác thực như sau: 'Page_ClientValidate ('reset-all'); ' –

+0

Chuỗi rỗng sẽ kích hoạt tất cả các trình xác nhận hợp lệ. – kerem

-3

Sử dụng Page_Validators[i].style.visibility = 'hidden'; Đừng làm việc cho tôi vì vậy tôi sử dụng dòng mã này thay vì: Page_Validators[i].enabled = false;

if (sFirstName == "" && sLastName == "") 
    { 

     alert('Reminder: Please first enter student ID to search for the student information before filling out the rest of the form field values'); 
     //Disable all require field validation coontrol on the form so the user could continue to use the Lookup student function. 
     document.forms[0].reset(); 
     for (i = 0; i < Page_Validators.length; i++) { 
      //Page_Validators[i].style.visibility = 'hidden'; 
      Page_Validators[i].enabled = false; 
     } 
     return false; 
    } 
    else 
    { 
     alert('Student Name = ' + sFirstName + ' ' + sLastName); 
     document.forms[0].reset(); 

     for (i = 0; i < Page_Validators.length; i++) { 
      //Page_Validators[i].style.visibility = 'hidden'; 
      Page_Validators[i].enabled = true; 
     } 
     return true; 
    } 
Các vấn đề liên quan