2011-09-29 2 views
3

'을 변경하는 테스트 함수를 만들고 싶습니다. 텍스트 상자에 ','문자로 charachter. 나는 Google doc이기 때문에 나는 서버 측을 바꿀 수 없다. '56 .3 '은 숫자로 간주되지만 '56, 3'은 (!)입니다.키 입력 이벤트 처리기 함수 취소 (addEventListener 함수)

의 나는 아래의 코드를 사용했다고 가정 해 봅시다 : '.'

function changeValue(e) { 
    e = window.event || e; 
    var keyCode = e.charCode || e.keyCode; 
    if (String.fromCharCode(keyCode)==='.') { 
      event.target.value+=","; 
      return false; 
    } 
    return true; 
} 

function start_up() { 
    console.log('Start'); 
    var tmp = document.getElementById('ss-form'); 
    tmp = tmp.getElementsByTagName('input'); 
    console.log(tmp); 
    for(var i=0; i<tmp.length; i++) { 
      tmp[i].addEventListener('keypress',changeValue, false); 
      console.log(i, tmp[i]); 
    } 
}; 

window.addEventListener("load",start_up, false); 

그런 문제가 모두 ','것을입니다 필드에 추가됩니다. 어떻게 '.'을 취소 할 수 있습니까? 눌려진 사건? 어떻게하면 '.'을 대체 할 수 있습니까? ','프레스 이벤트에 의해 눌려진 이벤트?

나는 인터넷을 검색했으며 'addEventListener'기능을 사용하여 해결책을 찾지 못했습니다.

답변

3

e.preventDefault()을 사용하면됩니다.

jsFiddle의 행동 느린 오늘,하지만 난 마침내 데모를 함께 넣어있어 : http://jsfiddle.net/yrYH4/

+0

필드의 값은 ','이지만 '.'입니다. ... –

0

이벤트 핸들러에서 true를 반환하는 때문에있을 수 있습니다.

event.preventDefault 또는 return false을 사용하면 기본 동작이 수행되지 않도록 할 수 있습니다. 처리기의 내부 if 문에서 false를 반환하고 main 함수에서 true를 반환합니다.

+2

if 문 내에서'return'을 호출하면 if 문 밖이 아닌 함수에서 빠져 나옵니다. –