[html] 통화 기호가있는 HTML 텍스트 입력 필드

맨 처음에 “$”기호를 포함하는 텍스트 입력 필드를 갖고 싶습니다. 필드에 어떤 편집이 발생하더라도 기호가 영구적으로 유지되도록합니다.

숫자 만 입력하면 좋겠지 만 그건 멋진 추가 일뿐입니다.



답변

테두리없는 입력 필드 주위에 테두리가있는 범위를 사용하여 고정 접두사 또는 접미사가있는 입력 필드를 시뮬레이션하는 것이 좋습니다. 다음은 기본적인 킥오프 예입니다.

.currencyinput {
    border: 1px inset #ccc;
}
.currencyinput input {
    border: 0;
}
<span class="currencyinput">$<input type="text" name="currency"></span>


답변

상위 .input-icondiv를 사용하십시오 . 선택적으로 .input-icon-right.

<div class="input-icon">
  <input type="text">
  <i>$</i>
</div>

<div class="input-icon input-icon-right">
  <input type="text">
  <i></i>
</div>

수직 아이콘 정렬 transformtop한 세트 pointer-eventsnone해당 클릭 입력에 집중되도록. paddingwidth적절하게 조정하십시오 .

.input-icon {
  position: relative;
}

.input-icon > i {
  position: absolute;
  display: block;
  transform: translate(0, -50%);
  top: 50%;
  pointer-events: none;
  width: 25px;
  text-align: center;
  font-style: normal;
}

.input-icon > input {
  padding-left: 25px;
  padding-right: 0;
}

.input-icon-right > i {
  right: 0;
}

.input-icon-right > input {
  padding-left: 0;
  padding-right: 25px;
  text-align: right;
}

허용되는 답변과 달리 오류가있을 때 빨간색 테두리와 같은 입력 유효성 검사 강조 표시가 유지됩니다.

Bootstrap 및 Font Awesome을 사용한 JSFiddle 사용 예


답변

입력 필드를 범위로 래핑 할 수 있습니다 position:relative;. 그런 다음 :before content:"€"통화 기호 를 추가
하고 만듭니다 position:absolute. JSFiddle 작동

HTML

<span class="input-symbol-euro">
    <input type="text" />
</span>

CSS

.input-symbol-euro {
    position: relative;
}
.input-symbol-euro input {
    padding-left:18px;
}
.input-symbol-euro:before {
    position: absolute;
    top: 0;
    content:"€";
    left: 5px;
}

업데이트
텍스트 상자의 왼쪽 또는 오른쪽에 유로 기호를 넣으려면. JSFiddle 작동

HTML

<span class="input-euro left">
    <input type="text" />
</span>
<span class="input-euro right">
    <input type="text" />
</span>

CSS

 .input-euro {
     position: relative;
 }
 .input-euro.left input {
     padding-left:18px;
 }
 .input-euro.right input {
     padding-right:18px;
     text-align:end;
 }

 .input-euro:before {
     position: absolute;
     top: 0;
     content:"€";
 }
 .input-euro.left:before {
     left: 5px;
 }
 .input-euro.right:before {
     right: 5px;
 }


답변

당신이 할 수 없기 때문에 ::before함께 content: '$'입력에와 절대 위치 요소를 추가하는 추가 HTML을 추가 – 나는 배경 SVG 인라인 CSS로 할 좋아한다.

다음과 같이 진행됩니다.

input {
    width: 85px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='16px' width='85px'><text x='2' y='13' fill='gray' font-size='12' font-family='arial'>$</text></svg>");
    padding-left: 12px;
}

다음을 출력합니다.

svg 달러 기호 배경 css

참고 : 코드는 모두 한 줄에 있어야합니다. 최신 브라우저에서 지원은 꽤 훌륭하지만 테스트해야합니다.


답변

결국 유형을 숫자로 유지해야했기 때문에 CSS를 사용하여 절대 위치를 사용하여 입력 필드에 달러 기호를 넣었습니다.

<div>
   <span style="position: absolute; margin-left: 1px; margin-top: 1px;">$</span>
   <input type="number" style="padding-left: 8px;">
</div>


답변

텍스트 입력 필드 내부가 아닌 앞에 ‘$’를 넣으십시오. 제출 후 ‘$’를 구문 분석 할 필요가 없기 때문에 숫자 데이터에 대한 유효성 검사가 훨씬 쉬워집니다.

당신은 함께 할 수 JQuery.validate () (또는 다른), 핸들 통화 몇 가지 클라이언트 측 유효성 검사 규칙을 추가합니다. 그러면 입력 필드 안에 ‘$’를 넣을 수 있습니다. 그러나 보안을 위해 여전히 서버 측 유효성 검사를 수행해야하며 ‘$’를 제거해야하는 위치로 돌아갑니다.


답변