2017-06-23 3 views
1

Ich benutze unten jQuery-Funktion, um alle Felder innerhalb eines div zu validieren. Mein Problem ist, dass es immer falsch zurückkehrt, auch wenn ich alle Felder ausfülle.Validieren Sie alle Eingabefelder in einem div mit jQuery

function validate(id) { 
      //:text, :checkbox, select, textarea 
      var isFormValid = true; 
      var div = $(id); 
      $(div).find(":text, select").each(function() { 
       if (this.value == "" && !$(this).hasClass("no-req")) { 
        $(this).addClass("required"); 
        isFormValid = false; 
        $(this).focus(); 
       } 
       else { 
        $(this).removeClass("required"); 
       } 
      }); 
      if (!isFormValid) { 
       alert("Please fill all the higlighted fields!"); 
      } 
      return isFormValid; 

     } 

auf Asp.net Schaltfläche Client Klicke ich diesen Code verwenden

<asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="javascript: return validate('#tdAdd');" OnClick="btnSave_Click" /> 
+0

haben Sie versucht, 'OnClientClick = "Validate ('# tdAdd');"' –

+0

Die Funktion gut zu funktionieren scheint -> https://jsfiddle.net/s5rfhsa9/1/ – adeneo

+0

Bitte lesen Sie [Unter welchen Umstände kann ich "dringende" oder andere ähnliche Phrasen zu meiner Frage hinzufügen, um schnellere Antworten zu erhalten?] (// meta.stackoverflow.com/q/326569) - die Zusammenfassung ist, dass dies keine ideale Weise ist, Freiwillige anzusprechen und ist wahrscheinlich kontraproduktiv, um Antworten zu erhalten. Bitte unterlassen Sie das Hinzufügen zu Ihren Fragen. – halfer

Antwort

0

ändert diese:

$(div).find(":text, select").each(function() { 
    if (this.val() == "" && !$(this).hasClass("no-req")) { 

An:

div.find(":text, select").each(function() { 
    if ($(this).val() == "" && !$(this).hasClass("no-req")) { 
+0

Frage als jQuery markiert, das ist nicht jQuery. https://stackoverflow.com/questions/4524702/jquery-function-val-is-not-äquivalence-to-this-value – mjw

0

Warum ein Build nicht verwenden -in aspnet Benutzerdefinierter Validator? Sie können dann alle TextBoxen in einem bestimmten div durchsuchen und den Validator-Wert zurückgeben.

<div id="validateTheseControls"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <br /> 
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
    <br /> 
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 

    <asp:CustomValidator ID="CustomValidator1" runat="server" 
    ClientValidationFunction="validateControlsInDiv" ErrorMessage="Not all fields are filled"></asp:CustomValidator> 
</div> 

<script type="text/javascript"> 
    function validateControlsInDiv(sender, element) { 
     var isValid = true; 

     $('#validateTheseControls input[type="text"]').each(function() { 
      if ($(this).val() == "") { 
       isValid = false; 
      } 
     }); 

     element.IsValid = isValid; 
    } 
</script> 
Verwandte Themen