2012-12-13 3 views
0

jQuery를 사용하여 양식의 입력을 자동으로 수정하는 스크립트를 사용하고 있습니다. 예를 들어 누군가 이니셜로 "abc"라고 쓰면 필드는 자동으로 A.B.C로 입력을 자동 수정합니다.jQuery 자동 수정 기능이 중복 된 필드에서 이상하게 작동합니다.

이 스크립트는 훌륭하게 작동합니다. 그러나 누구나 여러 가지 이름으로 여러 양식을 작성할 수 있습니다. 나는 양식을 복제 녹아웃을 사용하고 있습니다. .. 지금까지 너무 좋아하지만, auto-correction doesn't work on duplicated fields anymore

자동 보정이 (작은 부분)과 같습니다

바이올린 찾을 수
// Lowercase 
    $(".lowercase").keyup(function(e) 
    { 
     $(".lowercase").val(($(".lowercase").val()).toLowerCase()); 
     if (/[a-z]/g.test(this.value)) 
     { 
      this.value = this.value.replace(/[^a-z ]/g, ''); 
     } 

    }); 

    // Initials 
    $(".initials").focus(function() { 
     var current = $(".initials").val(); 
     $(".initials").keyup(function(e) { 
      var key = String.fromCharCode(e.keyCode); 
      if (key >= 'A' && key <= 'Z') { 
       current += key + "."; 
       this.value = current; 
      } 
      else { 
       current = ""; 
      } 
     }); 
    $(".initials").blur(function() { 
     var i = $(".initials").val(); 
     var last = i[i.length - 1]; 
     if (last != "." && i.length !== 0){ 
      this.value += "."; 
      } 
     }); 
    }); 


    // Capitalize 
    $(".cap").keyup(function(e) 
    { 
     function convertToUpper() { 
     return arguments[0].toUpperCase(); 
     } 
     val = this.value.toLowerCase().replace(/\b[a-z]/g, convertToUpper); 
     this.value = val; 

    }); 

here

업데이트를

감사합니다 raghaw에 Numbers now work. But other fields don't yet.

답변

1

미래에 생성 될 요소에서 작동하지 않는 바인딩 이벤트입니다.

$(document).on("keyup", ".numbers", function(e) 
// $(".numbers").keyup(function(e) 

귀하의 수정 바이올린은 여기 명확한 회신 http://jsfiddle.net/QUxyy/9/

+0

감사입니다 : 여기 코드에 변경 한 내용입니다! 도와 주셔서 감사합니다. 귀하의 답변은 숫자의 예에서 작동하지만, 작은 머리 글자는 이상하게 작동합니다. 나는 바이올린을 업데이트했다. http://jsfiddle.net/QUxyy/10/ 내가 뭘 잘못했는지 볼 수 있니? – mat

+0

죄송합니다. KO 사용자가 아니므로 KO 문제를 해결할 수 없습니다. 그러나 html, 추가 및보기에서 새 필드에 대한 올바른 값을 설정하는 것을 놓친 것을 보았습니다. 또한 첫 번째 키 누르기는 on 이벤트로 변환되지 않습니다. – closure

관련 문제