2010-08-19 37 views
5

Tôi có một nhóm các hộp văn bản yêu cầu xác thực trường bắt buộc. Rõ ràng tất cả họ đều có cùng tên nhóm xác nhận. Tôi có một hộp kiểm tra cho các điều khoản dịch vụ cần phải được kiểm tra trước khi nhấp vào nút gửi thực sự làm bất cứ điều gì.Bắt buộc một nhóm xác nhận thất bại nếu một điều kiện không được đáp ứng

Có một số mã C# sẽ nói nếu hộp này không được chọn, không thành công nhóm xác thực?

Hoặc có cách nào tốt hơn không?

chỉnh sửa: Tôi đã thêm trình xác thực tùy chỉnh và sử dụng mã này sau mã của mình. Không hoạt động.

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    args.IsValid = false; 
    if (cbxTerms.Checked) 
     args.IsValid = true; 
} 
+5

Tại sao không cung cấp cho CheckBox một CustomValidator và thêm nó vào cùng một nhóm xác nhận? – SteveCav

+0

Bạn đã thử sử dụng Trình xác thực tùy chỉnh chưa? – Raymund

+0

xin vui lòng xem chỉnh sửa của tôi ở trên, tôi thấy giải pháp này trên bạn ống nhưng nó không làm việc cho tôi. Tôi không thể hiểu tại sao. –

Trả lời

0

Tôi đã tìm ra cách thực hiện. Tôi đã tạo một hộp văn bản, gán một trình xác nhận trường req cho nó. Đặt hộp văn bản 99999px ra khỏi màn hình. Trong C# tôi đã nói nếu hộp kiểm được chọn, textbox.text = ""; trong hộp kiểm kiểm tra sự kiện đã thay đổi tôi đã nói nếu hộp kiểm được chọn thì textbox.text = "1" ;. Dễ dàng hơn nhiều so với bất kỳ giải pháp nào khác mà tôi có thể tìm thấy

Chỉnh sửa: Tốt hơn để sử dụng trường ẩn.

+0

Đừng quên chấp nhận câu trả lời của chính bạn là đúng – abatishchev

0

Nếu tôi làm điều này, tôi sẽ chỉ sử dụng JavaScript. Khi trang tải, hãy đính kèm trình xử lý sự kiện phía máy khách vào các nút gửi. Bên trong việc kiểm tra trình xử lý để xem nếu hộp kiểm được kiểm tra, nếu như vậy thì trả về true nếu không trả về false sẽ hủy bỏ việc gửi. Nếu JavaScript bị tắt thì điều đó cũng OK vì bạn nên có một số xác nhận hợp lệ phía máy chủ đang xảy ra bởi vì mọi người có thể sumbit hình thức theo những cách khác.

0

Bạn có thể làm những gì bạn đã làm ở trên nhưng với sự trở lại nếu không được chọn như thế

if (!cbxTerms.Checked) 
{requiredlabel.text="*"; 
return;} 

Bạn có thể đặt một nhãn bằng tay để nói cho người dùng biết ths lĩnh vực là cần thiết

+0

Vấn đề tôi gặp phải là ngay cả với mã tôi đã cung cấp, nhóm xác thực mà nút sử dụng không bị lỗi khi hộp không được chọn. –

0

bạn thậm chí có thể ngăn chặn postback nếu hộp kiểm không được chọn

Button1.Attributes["onclick"] = 
     "if (!$get('" + CheckBox1.ClientID + "').checked){alert('Agree with us,plz!');return false;}"; 

tại sao làm tất cả các công cụ xác nhận nếu nó có thể được ngăn chặn :)

hoặc nếu bạn thurst cho buộc nhóm không hợp lệ tou có thể làm nó giành chiến thắng xác nhận của riêng bạn về phía khách hàng:

function myStartUpValidation(group){ 
    var result=true; 
    //Page_ClientValidate(group); to validate group 
    for (var i = 0; i < Page_Validators.length; i++) { 
     if(Page_Validators[i].validationGroup==group){ 
     try{ 
      ValidatorValidate(Page_Validators[i]); //this forces validation in all groups 
      if(Page_Validators[i].isvalid==false){result=false;} 
      }catch(err){} 
     } 
    } 
    return result; 
} 

hoặc một validator thêm ...

Các vấn đề liên quan