2014-12-31 2 views
1

날짜를 표시하는 데 사용할 양식과 텍스트 입력 필드가 있습니다. 나는 "+"가 하루를 더하기 위해 .onkeypress을 통해 항목을 캡쳐 할 수 있기를 원합니다.입력 된 키가 입력 필드 값에 추가되는 것을 방지합니다.

내가 입력 한 키 (아래의 예에서는 + "키)는 dDate 필드에도 추가됩니다.

moment.js

다음은

<form> 
    <input type="text" id="dDate" size="25" value="11/22/2014"></textarea> 
</form> 

<script type="text/javascript"> 
document.getElementById("dDate").onkeypress=function(e) { 
    var e=window.event || e 
    var keyunicode=e.charCode || e.keyCode 
    //Allow alphabetical keys, plus BACKSPACE and SPACE 
    // return (keyunicode>=65 && keyunicode<=122 || keyunicode==8 || keyunicode==32)? true : false 
    switch (keyunicode) { 
     case 61: 
      alert("Hit Plus Key: "+ keyunicode); 
      break ; 
     case 43: 
      var cDate = document.getElementById("dDate"); 
      var d = moment(cDate.value); 
      var duration = moment.duration({'days' : 1}); 
      d.add(duration); 
      cNewDate = d.format('MM/DD/YYYY') 
      cDate.value = cNewDate; 
      break; 
     case 187: 
      alert("Hit Plus Key: "+ keyunicode); 
      break; 
     default: 
      alert("Hit non-Plus Key" + keyunicode); 
    } 
} 
</script> 

당신이 경우 위의 결과는 표준 HTML 태그 것 HTML 태그 후 발견 될 것입니다 HTML 태그 아래 의 태그에 추가 + 키가 dDate 필드 2014년 11월 23일로 증가된다 공격뿐만 아니라 "+", 결과가 있습니다 11/23/2014+

어떤 도움을 주시면 감사하겠습니다.

답변

0

스크립트 끝에 e.preventDefault()을 추가하면 문제가 해결됩니다. 또한

MDN Documentation

document.getElementById("dDate").onkeypress = function(e) { 
    // ... 
    e.preventDefault(); 
} 

, <input></textarea> 필요를 제거 할 정도로 자동 폐쇄된다.

+0

안녕하세요, 매우 빠른 응답을 보내 주셔서 감사합니다. 함수의 마지막 "}"직전에이 줄을 추가했지만 더 이상 날짜를 추가하기 위해 "+"키를 반복하지 못하지만 더 이상 "+"키를 끝에 추가합니다. 필드. 다른 의견은 있습니까? –

+0

@KevinHunt 입력 한 후에 ''이 (가)있는 것으로 확인되었습니다. 반드시 제거하십시오. 나는 또한 잠시 빠져서 일하는 바이올린을 세웠지 만 그럼에도 불구하고 의도 된대로 작업했다 : http://jsfiddle.net/6ueupu0f/ –

관련 문제