2013-10-28 3 views
4

몇 가지 수치 계산을 수행하는 작은 자바 스크립트 유틸리티를 작성하고 있습니다. 거의 모든 입력은 참값입니다 (즉, 나는 그들과 수학을하고 있으며, 우편 번호 또는 일종의 것이 아닙니다). 이 숫자 중 일부는 계산 전에 다른 숫자에 추가 될 수식어를 나타냅니다. 값이 0보다 큰 경우 더하기 기호 앞에이 숫자가 부호로 표시되도록하고 싶습니다. 이것은 파이어 폭스와 IE에서 잘 작동하는데 숫자 입력에는 특별한 기능을하지 않습니다. 그러나 parseFloat은 제대로 처리 할 수 ​​있지만 Chrome에서는 number 값의 더하기 문자를 허용하지 않습니다. 지금 당장 내 코드는 수동으로 필드 값에 +을 붙이면 Chrome에서 중단됩니다.Chrome의 숫자 입력에서 더하기 기호가 허용되지 않습니다. 해결 방법은 무엇입니까?

Chrome에서이 기능을 사용할 수있는 방법이 있습니까? 외관상으로는 (CSS content generation before or after 'input' elements) :before는 나를 여기 유용하지 않을 것이다. 이상적으로는 number 유형을 유지하고 싶습니다. 다른 모든 방법이 실패 할 경우 text을 사용할 수는 있지만 min, maxstep 속성을 사용합니다.

업데이트 : 필드에 novalidate을 추가하면 더하기 기호가 허용되지만 Chrome은 빈 문자열의 value을 요구합니다. 요소를 검사하면 novalidate을 포함하여 유효하지 않은 값을 표시 할 수있는 방법이 없습니다.

업데이트 : 유효하지 않은 필드 (How to get the raw value an <input type="number"> field?)에서 값을 가져 오는 좋은 방법이없는 것으로 보입니다. 그리고 유효성 확인은 input[type=text]에 대해 min, maxstep 속성이 허용되지 않음을 확인합니다. 내가 다른 것을 생각해 내지 않으면, 아마 플러스 기호를 포기할 것이다.

답변

0

더하기 기호로 시도했습니다. Chrome에서 작동하는 것 같습니다.

<div ng-app> 
<div ng-controller="PatternTestCtrl"> 
    <form name="ngform"> 
     <input type="number" name="numVal" ng-model="numValModel" ng-pattern="/[0-9]{5}/" maxlength="5" ng-maxlength="5"/> 
    </form> 
</div> 
</div> 
http://jsfiddle.net/jdev_hari/1c4te0cw/1/ 

내 브라우저 버전은 버전 37.0.2062.124 m입니다. 아직도 문제가 있습니까?

+0

작동하지 않습니다. "+42"를 입력 한 다음 증가 화살표를 클릭하십시오. + 기호는 Chrome이 문자열을 유효한 숫자 값으로 해석하지 못하도록하기 때문에 필드가 재설정됩니다. –

0

나는 똑같은 문제도 가지고 있었다. 패턴 및 type = "tel"를 사용하여 모바일 장치에서 숫자 키보드를 트리거하는 해결 방법을 사용했습니다.

관련 문제