2013-10-24 2 views
1
<td>Type: 

</td> 
    <td> 
    <asp:DropDownList ID="ddltype" runat="server"> 
    <asp:ListItem>---select---</asp:ListItem> 
     <asp:ListItem Text="Setter" Value="1"> 
     </asp:ListItem> 
     <asp:ListItem Text="Getter" Value="2"></asp:ListItem> 
      </asp:DropDownList> 
      </td> 

Для этого DropDownList, я поставил проверку как этотПроверка не срабатывает в asp.net?

var ddltype = document.getElementById('<%=ddltype.ClientID%>'); 
     var type = ddltype.options[ddltype.selectedValue].value; 
     if (type == 0) { 
      alert("Please Select setter/getter type."); 
      return false; 
     } 

но не стрелять. Как я могу это написать?

+2

Почему вы не используете валидаторы ASP.NET? –

+0

Что вызывает запуск javascript? Это событие onclick? Почему бы не использовать сборку в ASP.NET Validation? «RangeValidator» с минимумом 0 должен это делать? – RemarkLima

+1

Ваш выбор не имеет значения. Сделайте это: , тогда он будет работать –

ответ

5

Вы действительно должны ознакомиться с валидаторов ASP.NET. Javascript можно отключить.

<asp:DropDownList ID="ddltype" runat="server" AutoPostBack="true"> 
    <asp:ListItem>---select---</asp:ListItem> 
    <asp:ListItem Text="Setter" Value="1"></asp:ListItem> 
    <asp:ListItem Text="Getter" Value="2"></asp:ListItem> 
</asp:DropDownList><br /> 
<asp:RequiredFieldValidator ID="reqType" runat="server" 
    InitialValue="---select---" 
    ControlToValidate="ddltype" 
    ErrorMessage="Required: Please select a Type" 
    Display="Dynamic" 
    CssClass="blah"> 
</asp:RequiredFieldValidator> 

Важным является InitialValue. В противном случае ---select--- будет действительным выбором.

Обратите внимание, что я также добавил AutoPostBack="true" в DropDownList, возможно, вы захотите отправить обратно сразу после того, как пользователь выбрал элемент.

Побочного примечание: используйте ValidationSummary с ShowMessageBox="true" и EnableClientScript="true", если вы хотите, чтобы показать сообщения в яваскрипте оповещения.

+0

ОП спросил о проверке javascript, но почему вы меняете его мнение? –

+0

ASP.NET валидаторы также проверяют на клиентах (при желании), но также и на стороне сервера. Он также более читабельный и обслуживаемый, а затем работает с (избыточными) js-функциями. –

1

Попробуйте

var ddltype = document.getElementById('<%=ddltype.ClientID%>').text; 
if (type == "---select---") { 
     alert("Please Select setter/getter type."); 
     return false; 
    } 
+1

Также лучше использовать RequiredFieldValidator вместо написания пользовательской проверки js. RequiredFieldValidator будет проверять ввод также на стороне сервера (т. Е. Если у вашего пользователя отключен javascript). –

+0

Да, согласитесь. Но некоторые требуют проверки на стороне клиента, как это. – MusicLovingIndianGirl

+0

Я думаю, что этот код OP правильный! Твоя ошибка! –

-1

Попробуйте этот путь! но вы можете использовать контроль проверки asp.net.

В любом случае, мое решение будет проверять два типа, в раскрывающемся списке выбран юдоли или выпадающий выбранный элемент

function Validate() 
    { 
    var e = document.getElementById('<%=ddltype.ClientID%>'); 
    //if you need value to be compared then use 
    var strUser = e.options[e.selectedIndex].value; 
    //if you need text to be compared then use 
    var strUser1 = e.options[e.selectedIndex].text; 
    if(strUser==0) **//for text use if(strUser1=="---Select---")** 
    { 
    alert("Please Select setter/getter type."); 
     return false; 
    } 
    } 

Ниже код изменить свой код и работает хорошо для меня

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Home.aspx.cs" Inherits="Home" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function validation() { 
      debugger; 
      var e = document.getElementById('<%=ddltype.ClientID%>'); 
      var strUser1 = e.options[e.selectedIndex].value; 
      if (strUser1 == 0) { 
       alert("Please Select setter/getter type."); 
       return false; 
      } 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <table> 
      <tr> 
       <td> 
        <asp:Button ID="btnSave" runat="server" Text="Save" OnClientClick="validation();" OnClick="btnSave_Click" /> 
        <asp:DropDownList ID="ddltype" runat="server"> 
         <asp:ListItem Text="--Select--" Value="0"></asp:ListItem> 
         <asp:ListItem Text="Setter" Value="1"> 
         </asp:ListItem> 
         <asp:ListItem Text="Getter" Value="2"></asp:ListItem> 
        </asp:DropDownList> 
       </td> 
      </tr> 
     </table> 
     <div> 
     </div> 
    </form> 
</body> 
</html> 

и увидеть эту линию

<asp:ListItem Text="--Select--" Value="0"></asp:ListItem> 

Но вы пропустили заданное значение в этом элементе, так что это ошибка, теперь установите значение 0 в этой строке, и теперь ваш код работает (см. Мой пример кода). Или вам нужно использовать .text и проверить состояние для

if(strUser1=="---Select---") 
{ 
//alert 
} 
Смежные вопросы