Firefox 4 : 필수 양식 입력에서 빨간색 테두리를 제거하는 방법이 있습니까?


85

양식 필드에 required가 정의되면 Firefox 4는 사용자가 제출 버튼을 누르기 전에도 자동으로이 요소에 빨간색 테두리를 표시합니다.

<input type="text" name="example" value="This is an example" required />

처음에는 실수를하지 않았기 때문에 사용자가 불편하다고 생각합니다.

초기 상태에서는 빨간색 테두리를 숨기려고했지만 필수로 표시된 누락 된 필드가있는 경우 사용자가 보내기 버튼을 눌렀을 때 표시합니다.

나는 보았다 :required:invalid새로운 의사 선택에서, 그러나 변화는위한 전후 검증. ( Firefox 4 필수 입력 양식 RED border / outline )

사용자가 양식을 제출하기 전에 빨간색 테두리를 비활성화하고 누락 된 필드가있는 경우 표시하는 방법이 있습니까?


1
outline : 0은 어떻습니까? ?
Ace

답변:


150

이것은 약간 까다로 웠지만이 예제를 설정했습니다 : http://jsfiddle.net/c5aTe/ 나를 위해 일하고 있습니다. 기본적으로 트릭은 잘못된 자리 표시 자 텍스트를 사용하는 것 같습니다. 그렇지 않으면 다음을 수행 할 수 있습니다.

input:required {
    box-shadow:none;
}
input:invalid {
    box-shadow:0 0 3px red;
}

또는 비슷한 ...

하지만 FF4가 자리 표시 자 텍스트의 유효성을 검사하기로 결정했기 때문에 (이유는 모르겠습니다 ...) 바이올린의 솔루션 (작은 해키 사용 !important)이 필요합니다.

도움이 되었기를 바랍니다.

편집하다

도! -어리석은 기분 이네요. 내 바이올린을 업데이트했습니다 : http://jsfiddle.net/c5aTe/2/-:focus 가상 클래스를 사용 하여 사용자가 입력하는 동안 유효한 것처럼 요소 스타일을 유지할 수 있습니다 . 항목이 초점을 잃었을 때 내용이 유효하지 않은 경우에도 여전히 빨간색으로 강조 표시되지만 설계된 동작으로 할 수있는 일이 너무 많다고 생각합니다.

HTH :)


수락 후 수정 :

OP의 요청에 따른 예 요약 (처음 두 개는 Chrome이 아닌 FF4 용으로 만 설계됨 )

  1. 자리 표시 자 텍스트를 확인하는 FF 수정 : http://jsfiddle.net/c5aTe/
  2. 입력시 FF 유효성 검사 수정 : http://jsfiddle.net/c5aTe/2
  3. JS 솔루션 토글 링 스타일 / 검증 : http://jsfiddle.net/c5aTe/4

큰 돌파구이지만 실제로 무언가를 쓰기 전에 사용자가 입력 => 입력을 클릭하면 "잘못된"오류가 표시되는 것 같습니다. 하지만 내가 원하는 것은 해결할 수없는 FF4의 버그 일 수도 있습니다. /
Cyril N.

하지만 끔찍한 빨간색 상자 그림자를 제한하는 방법은 +1입니다. :)
Cyril N.

이상하게도 거의 너무 영리하고 즉석에서 검증 하기 때문에 이것을 할 수 있다고 생각하지 마십시오 . 제출할 때 양식에서 클래스를 추가하거나 제거하는 추가 자바 스크립트를 사용하면 영리 할 수 ​​있습니다. 그런 다음 해당 클래스의 존재 여부에 따라 유효성 검사 강조 표시를 재정의 할 수 있습니다. 이것에 대한 좋은 점은 여전히 ​​네이티브 유효성 검사를 사용하고 있다는 것입니다.
Stuart Burrows

1
아침 식사를 만드는 동안 영감을 얻었습니다-위에 추가했습니다!
Stuart Burrows

영리한! : p하지만 살펴보면 원래 상태에 대한 그림자와 유효하지 않은 상태에 대한 상자 그림자가 있습니다. 둘 다 표시됩니다. 나는 이것이 Mozilla의 실수라고 믿기 시작했습니다. 그들은 초기 상태에 대해 생각하지 않았습니다. 이것이 정확하고 다른 사람이 작업을 완전히 수행하는 방법을 추가하지 않으면 귀하의 답변을 수락하지 않지만 현상금을 줄 것입니다 (가능하지 않으면 귀하의 답변을 수락하겠습니다). 당신은 그것을받을 자격이 있습니다 :) 당신의 도움에 감사드립니다!
Cyril N.

38

Firefox 26부터 유효하지 않은 필수 필드를 식별하는 데 사용되는 실제 CSS는 다음과 같습니다 (forms.css에서 가져옴).

:not(output):-moz-ui-invalid {
    box-shadow: 0 0 1.5px 1px red;
}

다른 브라우저에서 복제하려면 다음을 사용합니다.

input:invalid {
    box-shadow: 0 0 1.5px 1px red;
}

나는 픽셀 설정을 가지고 놀았지만 moz 소스를 보지 않고는 1.5px를 추측하지 못했을 것입니다.

비활성화하려면 다음을 사용할 수 있습니다.

input:invalid {
    box-shadow: none;
}

작은 정밀도 : 이것을 좋아하는 사람들을위한 것이 :not(output):-moz-ui-invalid아닙니다 input:not(output):-moz-ui-invalid.
Skoua

당신은 절대적인 전설입니다.
abejdaniels

2

나를 위해 일한 매우 쉬운 솔루션이 있습니다. 기본적으로 추악한 빨간색을 필수가 아닌 필드의 표준 색상 인 매우 멋진 파란색과 웹 규칙으로 변경했습니다.

:required {
    border-color: rgba(82, 168, 236, 0.8);
}

1

이것은 나를 위해 잘 작동했습니다.

input:invalid {
     -moz-box-shadow: none;
}

7
여기서 문제는 유효성 검사 후 상자 그림자가 없음으로 유지되고 사용자가 오류가 발생하는 위치에 대한 단서가 없다는 것입니다. 내가 원하는 것은 양식의 정상적인 상태에서 빨간색 테두리를 표시하지 않고 오류가있는 경우 사용자가 양식을 제출 / 흐리게 할 때 표시하는 것입니다.
Cyril N.

1

시험:

document.getElementById('myform').reset();

0

이것을 시도하십시오,

$ ( "form"). attr ( "novalidate", true);

글로벌 .js 파일 또는 헤더 섹션의 양식에 대해.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.