2013-03-18 3 views
0

텍스트 필드 특수 문자를 바꾸고 모든 텍스트를 대문자로 바꾸는 기능이 있습니다. 나는 <script> 태그 내에 직접 기능을 추가하는 경우 :특수 문자를 지우는 자바 스크립트 기능

<script language="JavaScript" type="text/javascript"> 
function ... 
<script/> 

을 예상대로 스크립트가 작동합니다. 내가 외부 파일로 포함하는 경우

은 :

<script type="text/javascript" src="<?php echo $dir_js; ?>/plugins/replace.js"></script> 

만 대문자 작품 변경, 특수 문자는 제거되지 않습니다.

어떤 도움이 필요합니까? 뭐가 문제 야?

function retiraAcento(palavra,obj) 
{ 
    com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ'; 
    sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC'; 
    nova=''; 
    for(i=0;i<palavra.length;i++) { 
    if (com_acento.search(palavra.substr(i,1))>=0) { 
     nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1); 
    } 
    else { 
     nova+=palavra.substr(i,1); 
    } 
    } 
    obj.value = nova.toUpperCase(); 
} 

$(":input").live('blur', function() { 
    retiraAcento(this.value, this); 
}); 

답변

1

내 생각 엔이 외부 파일이 메인 파일과 같은 인코딩이 아니라고 할 것이다. 두 파일 모두에 UTF-8 인코딩이 있는지 확인하고 사용중인 서버가 올바른 내용 유형의 파일을 제공하는지 확인해야합니다.

파일이 다른 인코딩이있는 경우이 때문에 á 당신의 자바 스크립트 파일 —에 á과 일치하지 않을 사용자의 입력에 입력 등을 찾을 수 없습니다 제거한다는 사실에 발생한 문제가 발생할 것입니다.

이번 라운드 또 다른 방법은, 외부 자바 스크립트에 하드 코딩 된 값을 사용하는 대신 정보가 여기 정규식을 사용하여 확인하지하는 것입니다 :

http://www.regular-expressions.info/unicode.html#grapheme

+0

맞습니다! 팁에 대해 많은 감사드립니다. 지금 일하고있어. – user2123738

+0

@ user2123738 이상한 문자 비교가 항상 인코딩을 확인하면 문제는 없습니다.) – Pebbl

2

당신은 준비 이벤트에 코드를 포장해야합니다

$(document).ready(function() { 
    $(":input").live('blur', function() { 
    retiraAcento(this.value, this); 
    }); 
}); 
+0

가 나는 것을 시도했다, 그러나 문제는 내가 가정 – user2123738

+0

계속 파일이 제대로 포함 되었습니까? 코드에'alert ("here")'를 추가하면 실제로 볼 수 있습니다. – hexblot

+0

예, 다음을 추가했습니다 : alert ("here"); 아래 obj.value = nova.toUpperCase(); 상자가 나타납니다 ... 도 대문자로 작업 ... – user2123738