Hvordan kan jeg bekrefte at en listeboks ikke er tom (klientsiden)

stemmer
3

Jeg arbeider med ASP.NET 3.5. Jeg har en listeboks som brukerne må legge til elementer (jeg har skrevet koden for dette). Mitt krav er at minst ett element må legges til listeboksen eller de kan ikke sende inn skjemaet. Jeg har flere andre validatorer på siden, og de alle skrive til en ValidationSummary kontroll. Jeg ønsker denne listeboksen validering skrive til Validation Sammendrag kontroll også. Alle hjelpe er verdsatt. Takk skal du ha.

Publisert på 24/09/2008 klokken 15:07
kilden bruker
På andre språk...                            


7 svar

stemmer
5

Dette fungerte ikke for meg:

function ListBoxValid(sender, args) 
{
        args.IsValid = sender.options.length > 0; 
}

Men dette gjorde:

function ListBoxValid(sender, args)
{
        var ctlDropDown = document.getElementById(sender.controltovalidate);
        args.IsValid = ctlDropDown.options.length > 0; 
}
Svarte 05/12/2008 kl. 15:38
kilden bruker

stemmer
5

Stikk innom en tilpasset validator, Legg inn ønsket feilmelding til det, dobbeltklikk på den egendefinerte validator for å få til koden bak for hendelsesbehandling, og så ville du implementere server side som dette:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
{
        args.IsValid = ListBox1.Items.Count > 0; 
}

Også du kan implementere klientsiden javascript i tillegg.

Jeg bare kastet dette opp på en side, og testet den raskt, så du må kanskje justere den litt: (The Button1 bare legger til et element i listeboks)

<script language="JavaScript">
<!--
  function ListBoxValid(sender, args)
  {
      args.IsValid = sender.options.length > 0;
  }
// -->
</script>    
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" ValidationGroup="NOVALID" />
<asp:Button ID="Button2" runat="server" Text="ButtonsUBMIT"  />

<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="CustomValidator" 
onservervalidate="CustomValidator1_ServerValidate" ClientValidationFunction="ListBoxValid"></asp:CustomValidator>

Hvis du legger til en validering oppsummering til siden, feil du teksten skal vises i at sammendraget hvis det er ingen elementer i listeboksen, eller annen samling-stand kontroll, hva du ønsker å bruke, så lenge ValidationGroup er den samme .

Svarte 24/09/2008 kl. 15:48
kilden bruker

stemmer
3

må sørge for å legge til disse egenskapene til CustomValidator:

Display="Dynamic" ValidateEmptyText="True"
Svarte 10/06/2011 kl. 14:56
kilden bruker

stemmer
1

Egentlig er dette den riktige måten å gjøre dette arbeidet (så langt Javascript er opptatt).

ListBox.options.length vil alltid være din totale antall opsjoner, ikke nummeret du har valgt. Den eneste måten jeg har funnet som fungerer er å bruke en for loop å gå gjennom listen.

function ListBoxValid(sender, args) {

  var listBox = document.getElementById(sender.controltovalidate);

  var listBoxCnt = 0;

  for (var x =0; x<listBox.options.length; x++)
  {
    if (listBox.options[x].selected) listBoxCnt++;
  }

  args.IsValid = (listBoxCnt>0)

}

Svarte 03/05/2010 kl. 17:41
kilden bruker

stemmer
1
<asp:CustomValidator 
     runat="server" 
     ControlToValidate="listbox1"
     ErrorMessage="Add some items yo!" 
     ClientValidationFunction="checkListBox"
/>

<script type="Text/JavaScript">
  function checkListBox(sender, args)
  {
      args.IsValid = sender.options.length > 0;
  }
</script>    
Svarte 20/11/2008 kl. 22:49
kilden bruker

stemmer
0

dette arbeidet for meg

<script language="JavaScript">
  function CheckListBox(sender, args)
  {
      args.IsValid = document.getElementById("<%=ListBox1.ClientID%>").options.length > 0;
  }
</script>    
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="*Required" ClientValidationFunction="CheckListBox"></asp:CustomValidator>
Svarte 17/11/2016 kl. 08:52
kilden bruker

stemmer
-1

Du vil ønske å registrere din kontroll med siden ved å sende inn kunde-. Deretter kan du bruke Microsoft AJAX å fange din kontroll og sjekke verdiene.

Svarte 24/09/2008 kl. 15:17
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more