Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo ra lỗi nếu số được lặp lại trong một biểu mẫu

Giả sử bạn có biểu mẫu như thế này (lưu ý rằng tất cả các đầu vào có cùng một lớp):

<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>

Bạn có thể làm với jQuery một cái gì đó như thế này:

 $(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;}
    }); 
 });

Đối với html bạn đã đăng, bạn có thể sử dụng điều này: Thông báo Tôi không lưu trữ vị trí của giá trị được sao chép.

$(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"); 
         }

       });
    });
  });

Đối với mã ở trên, chúng tôi giả sử bạn muốn kiểm tra tất cả các trường mà tên thuộc tính bắt đầu bằng chuỗi "Số vị trí"

Tôi sẽ cố gắng giảm mã sau này, tôi nghĩ rằng có một cách ngắn nhất để kiểm tra xem giá trị "RecordPosition" có bị trùng lặp hay không, nhưng cần phải kiểm tra một số ý tưởng.

Đây sẽ là giải pháp của bạn (một trong số chúng):

  $(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;
            }

    });
  });

Tôi phiên bản ngắn hơn:

$(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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể lưu trữ các ký tự UTF8 trong MySQL

  2. sự khác biệt giữa GROUP BY và ORDER BY trong sql

  3. Mysql Tháng - So sánh Năm

  4. Triển khai máy chủ Percona cho một đám mây kết hợp

  5. MySQL InnoDB Text Search Options