sql >> Database >  >> RDS >> Mysql

Genereer een fout als nummer wordt herhaald in een formulier

Laten we aannemen dat je een formulier hebt zoals dit (merk op dat alle invoer dezelfde klasse heeft):

<form id="myForm" method="POST" action"someUrl">
    <input type="text" class="recordPosition"></input>
    <input type="text" class="recordPosition"></input>
    <input type="text" class="recordPosition"></input>
    <input type="text" class="recordPosition"></input>
</form>

Je zou met jQuery zoiets als dit kunnen doen:

 $(document).ready(function(){

 $(".recordPosition").on("blur", function(){
     var allFieldsForOrder = $('.recordPosition');
     var count = 0;
     var i=0
    //console.log(allFieldsForOrder.length );
      while((i<allFieldsForOrder.length) && (count < 2)){
             if ($(allFieldsForOrder[i]).val()===$(this).val())
            {
             count++                 
            }
            i++;
     } 

     if (count==2){
        alert("A duplicated value"); return false;}
    }); 
 });

Voor de html die je hebt gepost kun je dit gebruiken:Opmerking Ik sla de positie van de gedupliceerde waarde niet op.

$(document).ready(function(){
    //console.log($("input[type='text'][name^='PositionNumber'").length);
    $("input[type='text'][name^='PositionNumber'").each(function(){
         $(this).on("blur", function(){

         var allFieldsForOrder = $("input[type='text'][name^='PositionNumber'");
         var count = 0;
         var i=0

         while((i<allFieldsForOrder.length) && (count < 2)){
                if ($(allFieldsForOrder[i]).val()===$(this).val())
                {
                 count++                 
                }
                i++;
         }

         if (count==2){
            alert("A duplicated value"); 
         }

       });
    });
  });

Voor de bovenstaande code gaan we ervan uit dat u alle velden wilt controleren waar de attribuutnaam begint met de tekenreeks "PositionNumber"

Ik zal later proberen de code te verminderen, ik denk dat er een kortste manier is om te controleren of de "RecordPosition" -waarde wordt gedupliceerd, maar ik moet enkele ideeën testen.

Dit zal uw oplossing zijn (een van hen):

  $(document).ready(function(){


    $('form').on("submit",function(){
            var tempArray=[];
            $("input[type='text'][name^='PositionNumber'").each(function(){
                tempArray.push($(this).val());
            });

            var i=0;
            var duplicated=false;
            var currentElement;
            while((tempArray.length >= 0) && (duplicated==false)){                  
                //pop it out from the array
               currentElement = tempArray.pop();
               duplicated = tempArray.indexOf(currentElement)          

            }

            //after you can use "duplicated" to cancel the submit
            if (duplicated){                    
                alert("duplicated value:" + currentElement);
                return false;
            }

    });
  });

I kortere versie:

$(document).ready(function(){           
 $('form').on("submit",function(){
         var tempArray=[];            
        var exists=0;
         $("input[type='text'][name^='PositionNumber'").each(function(){
             exists = tempArray.indexOf($(this).val());             
             if (exists>=0){                    
                 return false;//break the loop
             }
             tempArray.push($(this).val());                  
         });

         //after you can use "exist" to check if duplicated and retrieve the value to cancel the submit
         if (exists>=0){                   
             alert("duplicated value:" + tempArray[exists]);                
         } else{
             alert("no duplicated value:");
         }

        return false;            
 }); 
});


  1. Dagen aan een datum toevoegen in MySQL

  2. Geschiedenis van impasses in Oracle?

  3. Kan geen verbinding maken met lokale MySQL-server via socket '/var/mysql/mysql.sock' (38)

  4. BESTELLEN OP Alias ​​werkt niet