2009-09-11 15 views
6

Tôi có thông tin sau trên trang web của mình.Làm cách nào để xác thực văn bản bắt buộc khi tùy chọn "Khác" được chọn từ danh sách thả xuống?

Nguồn [DropDownList]

website

Search Engine

khác

Khác Nguồn [TextBox]

Tôi muốn sử dụng xác nhận ASP.Net (Tôi nghĩ rằng trình so sánh) rất tha t khi "Khác" được chọn trong danh sách thả xuống và không có văn bản nào được nhập, quá trình xác thực được kích hoạt và không thể gửi trang.

Điều này có khả thi không?

Tôi đã cố gắng đặt giá trị của tùy chọn "Khác" trong trình đơn thả xuống thành string.empty và so sánh nó với một hộp văn bản trống nhưng điều này không hoạt động.

Toàn bộ điều mà tôi đã kế thừa nằm bên trong một điều khiển thuật sĩ, nếu không tôi sẽ nối một số tập lệnh khách hàng để kích hoạt xác thực bản thân. Tôi không nghĩ rằng tôi có thể làm điều này với một điều khiển thuật sĩ?

Xin cảm ơn trước.

Trả lời

9

Không ai trong số các ASP.NET cung cấp xác nhận cho phép bạn thực hiện xác nhận có điều kiện dựa trên kiểm soát khác. Tuy nhiên, bạn có thể đạt được điều này bằng cách sử dụng CustomValidator thực hiện xác thực trên phía máy khách, phía máy chủ hoặc cả hai (ở mức tối thiểu, xác thực phía máy chủ được khuyến nghị). Các trình xác nhận hợp lệ hoạt động tốt cùng với các trình thuật sĩ.

mẫu đánh dấu ASP.NET:

<asp:DropDownList ID="OptionsDropDownList" runat="server"> 
     <asp:ListItem Text="Website" /> 
     <asp:ListItem Text="Search Engine" /> 
     <asp:ListItem Text="Other" /> 
    </asp:DropDownList> 
    <asp:TextBox ID="OtherTextBox" runat="server" /> 
    <asp:CustomValidator ID="custvOptionsDropDownList" runat="server" ControlToValidate="OptionsDropDownList" 
     ValidateEmptyText="true" Display="Dynamic" ClientValidationFunction="validateOtherTextBox" 
     ErrorMessage="This field is required!" OnServerValidate="ValidateOtherTextBox" /> 

Javascript cho ClientValidationFunction:

<script type="text/javascript" language="javascript"> 
    function validateOtherTextBox(event, args) { 
     var textbox = document.getElementById('<%= OtherTextBox.ClientID %>').value; 
     if (args.Value == 'Other') 
      args.IsValid = (textbox != ''); 
     else 
      args.IsValid = true; 
    } 
</script> 

Code-Behind cho OnServerValidate:

protected void ValidateOtherTextBox(object source, ServerValidateEventArgs args) 
    { 
     if (OptionsDropDownList.SelectedValue == "Other") 
     { 
      args.IsValid = (OtherTextBox.Text.Trim() != ""); 
     } 
    } 

Lưu ý rằng đó là lựa chọn của bạn để thực hiện bất cứ điều gì bạn cần. Bạn hoàn toàn có thể bỏ qua xác thực Javascript và xóa mã đó cũng như thuộc tính ClientValidationFunction. Ngoài ra, hãy lưu ý rằng Javascript đề cập đến điều khiển đích bằng cách sử dụng thuộc tính ClientID. Điều này là cần thiết vì ASP.NET gán một ID khác nhau khi trang là đầu ra và bạn sẽ muốn nó được cung cấp cho phương thức Javascript theo cách này (xem nguồn trên trang và bạn sẽ thấy rằng tên điều khiển có thêm tiền tố, vv).

0

bạn kiểm tra sau đó lựa chọn người trong chọn trong DropDownList như thế này

if (ddl.selecteditemindex == 1){ 
if (txtvalue.text == "") 
{ 
alert('you write something if selected other otherwise choose from a list'); 
} 
} 
Các vấn đề liên quan