name = ''의 유효하지 않은 양식 컨트롤은 초점을 맞출 수 없습니다


671

웹 사이트에 심각한 문제가 있습니다. Chrome에서 일부 고객은 결제 페이지로 이동할 수 없습니다. 양식을 제출하려고 할 때이 오류가 발생합니다.

An invalid form control with name='' is not focusable.

이것은 JavaScript 콘솔에서 온 것입니다.

필요한 속성을 가진 숨겨진 필드로 인해 문제가 발생할 수 있음을 읽었습니다. 이제 문제는 html5 필수 속성이 아닌 .net webforms 필수 필드 유효성 검사기를 사용하고 있다는 것입니다.

이 오류가 발생하는 사람은 무작위로 보입니다. 이에 대한 해결책을 아는 사람이 있습니까?


11
숨겨진 필수 필드 때문일 것으로 생각되는 경우 경우에 따라 해당 필드가 비어 있는지 확인해야합니까? 예를 들어, 세션에서 user_id 또는 이와 유사한 것을 채우면 어떤 경우에는 비워 둘 수 있습니까?
dkasipovic

1
동의했다. Chrome에서 개발자 콘솔 (F12)을 열고 필드 값을 검사하여 해당 필드 값이 비어 있는지 확인하십시오.
바닐라 스릴 라

당신의 의견에 감사드립니다. 그래도 나에게 어떤 말도하지 않습니까? asp.net 양식 컨트롤을 사용하는 간단한 asp.net 양식이 있습니다. 입력 컨트롤은 프레임 워크에 의해 생성됩니다.
mp1990

확인하고 입력 필드에 값이 있습니다. 값이있는 숨겨진 입력 필드가 하나 있습니다.
mp1990

3
필드가 필요하지만 일반적인 용어로는 "보이지"않을 때 발생한다고 생각합니다. 오류가 발생한 필드가 제출시 활성화되지 않은 탭에있는 여러 탭으로 나뉘어 진 형태로 필드에서 필요한 속성을 제거하고 특정 유효성 검사를 수행했습니다
TexWiller

답변:


818

이 문제는 양식 필드의 유효성 검사에 실패한 경우 Chrome에서 발생하지만 각각의 유효하지 않은 컨트롤에 초점을 맞출 수 없기 때문에 브라우저에서 "이 필드를 입력하십시오" 라는 메시지를 표시하려는 시도 도 실패합니다.

여러 가지 이유로 유효성 검사가 트리거 될 때 양식 컨트롤에 포커스를 두지 못할 수 있습니다. 아래에 설명 된 두 가지 시나리오가 가장 두드러진 원인입니다.

  • 이 필드는 비즈니스 로직의 현재 컨텍스트에 따라 관련이 없습니다. 이러한 시나리오에서는 해당 컨트롤을 DOM에서 제거하거나 required해당 시점에 속성 으로 표시하지 않아야 합니다.

  • 사용자 가 입력에서 ENTER 키를 누르면 조기 검증이 발생할 수 있습니다 . 또는 컨트롤의 type속성을 올바르게 정의하지 않은 형태로 버튼 / 입력 컨트롤을 클릭하는 사용자 . 버튼의 type 속성이로 설정되어 있지 않은 경우 버튼 속성을 기본값으로 사용 button하므로 버튼을 클릭 할 때마다 Chrome (또는 해당 사안의 다른 브라우저)에서 유효성 검사를 수행 합니다.submittype

    문제를 해결하려면 페이지에 submit 또는 reset 이외의 다른 작업을 수행하는 버튼이있는 경우 항상 다음을 수행하십시오 <button type="button">.

또한 참조 https://stackoverflow.com/a/7264966/1356062


2
이 문제는 클라이언트 측 유효성 검사를 지원하지 않거나 양식 제출을 방해하지 않는 브라우저로 페이지를 빌드하고 테스트 할 때 발생할 수 있습니다 (Safari 참조). 클라이언트 측 오류 (Chrome, 숨겨진 양식 요소에서도)에서 양식 제출을 실제로 방지하는 브라우저를 보유한 다음 개발자 또는 사용자는 양식을 제출할 수없고 메시지를받지 못해 액세스 할 수없는 양식의 문제점에 부딪칩니다. 브라우저 또는 사이트 클라이언트 측 유효성 검사는 사용자 입력을 지원해야하므로 'novalidate'를 통한 유효성 검사 방지는 정답이 아닙니다. 웹 사이트를 바꾸는 것이 해결책입니다.
graste

4
자세한 답변 주셔서 감사합니다. 생략 required하거나 추가하는 novalidate것은 좋은 해결 방법이 아닙니다.
fatCop

2
이것이 정답이어야합니다. html5 클라이언트 측 유효성 검증을 사용중인 경우, novalidate를 추가하면 다른 문제점을 작성하는 동안 하나의 문제점이 수정됩니다. 나쁘게 Chrome은 표시되지 않은 입력의 유효성을 검사하려고합니다 (따라서 필요하지 않아야 함).
kheit

1
예를 들어 number, 기본값을 단계 크기로 균등하게 나눌 수없는 숨겨진 필드가 있습니다. 단계 크기를 변경하면 문제가 해결되었습니다.
James Scott

3
@IgweKalu 좋은 전화. 텍스트 영역 필드에서 TinyMCE를 구현하는 데 어려움을 겪었습니다. TinyMCE는 원래 양식 필드 ( "필수")를 숨기고이 오류를 트리거합니다. 해결책, 양식에서 현재 숨겨진 "필수"속성을 제거하고 다른 방법을 사용하여 양식이 채워 졌는지 확인하십시오.
john

355

novalidate양식에 속성을 추가 하면 도움이됩니다.

<form name="myform" novalidate>

41
보안 위험이 아닙니다. (클라이언트 측 점검에 의존합니다.) 유용성 문제입니다.
Jukka K. Korpela

9
나는 시도하고 "신성화" 가 필요하지 않다는 것을 알았습니다 ! 방금 내 양식에 이름을 부여했으며 모든 것이 잘 작동했습니다!
Sunny Sharma

33
나는 "노출"이 실제로 필요하다는 것을 알았습니다. 양식 이름 만 추가하면 작동하지 않습니다.
Jeff Tian

13
novalidate를 추가하면 Rails Simple Form gem과 같은 클라이언트 측 유효성 검사도 중지됩니다. Ankit의 답변 + David Brunow의 의견에 따라 문제 필드를 필요하지 않게하는 것이 좋습니다.
스틸

9
"name = ''의 유효하지 않은 양식 컨트롤에 초점을 맞출 수 없습니다." 입력이에있는 경우도 쇼<fieldset>
oscargilfc

261

당신의에서 form, 당신은 숨겨진 수도 input가진 required속성을 :

  • <input type="hidden" required />
  • <input type="file" required style="display: none;"/>

(가) form이러한 요소에 초점을 맞출 수 없습니다, 당신은 제거해야 required당신이 정말로 숨겨진 입력을 요구하는 경우이를 처리하는 자바 스크립트 유효성 검사 기능을 모든 숨겨진 입력에서, 또는 구현합니다.


7
'이메일'유형의 입력란이 없음을 표시하도록 설정된 경우에도 발생할 수 있습니다. Chrome에서 형식의 유효성을 검사하려고 시도하여 발생하는 문제입니다.
David Brunow

3
필요가 없습니다 required. pattern혼자서이 문제를 일으킬 수 있습니다.
Pacerier

3
필자의 경우 양식 필드가 type = "hidden"이 아니 었습니다. 예를 들어 탭이있는 양식에서는보기가 간단하지 않았습니다.
Josh Mc

나는 두 가지 형태, 둘 모두 하나가 <input type="hidden" required />와 다른 <input type="text" style="display: none" required />, 그리고 크롬의 유일한 표시되는 오류가이다 display: none, 그동안 "hidden"한을 제출 벌금.
Pere

이것이 정답입니다. Chrome에서 CSS에 숨겨진 필드의 유효성을 검사하려고합니다. 은 (는) 유효성 검사 경고 메시지를 표시하지 못하게하므로이 사실을 경고합니다.
superluminary

33

다른 사람 이이 문제를 겪고 있다면 같은 경험을했습니다. 의견에서 논의했듯이 브라우저가 숨겨진 필드의 유효성을 검사하려고했기 때문입니다. 양식에서 빈 필드를 찾아서 초점을 맞추려고했지만로 설정 display:none;되었으므로 사용할 수 없었습니다. 따라서 오류입니다.

나는 이와 비슷한 것을 사용하여 해결할 수있었습니다.

$("body").on("submit", ".myForm", function(evt) {

    // Disable things that we don't want to validate.
    $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", true);

    // If HTML5 Validation is available let it run. Otherwise prevent default.
    if (this.el.checkValidity && !this.el.checkValidity()) {
        // Re-enable things that we previously disabled.
        $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", false);
        return true;
    }
    evt.preventDefault();

    // Re-enable things that we previously disabled.
    $(["input:hidden, textarea:hidden, select:hidden"]).attr("disabled", false);

    // Whatever other form processing stuff goes here.
});

또한 이것은 Chrome에서만 "잘못된 양식 컨트롤" 의 복제본 일 수 있습니다.


6
이 답변에 투표하는 경향이 있다면 의견을 남겨주세요. 여기에 정보를 남겨두고 커뮤니티를 오도하는 것보다 잘못된 정보가 포함되어 있으면 답변을 제거하고 싶습니다.
Horatio Alderaan

1
나는 투표를하지 않을 것이지만이 코드는 무차별적인 "문제를 가리는"접근법을 사용한다고 생각한다. 레거시 코드를 다룰 때 분명히 유용하지만 최신 프로젝트의 경우 문제를 좀 더 자세히 살펴 보는 것이 좋습니다. 이 답변은 양식 태그에서 "novalidate"를 사용하는 경우에도 적용되지만 조금 더 잘 보입니다. 제거하지 않고 비활성화 된 경우 +1
Jonathan DeMarks

1
약간의 컨텍스트를 제공하기 위해이 문제가 발생했을 때 정확히 "레거시 코드 처리"상황에있었습니다. 나는 그것이 핵임을 동의합니다. 이 상황이 발생하지 않도록 마크 업을 디자인하는 것이 훨씬 좋습니다. 그러나 레거시 코드베이스 및 융통성없는 CMS 시스템에서는 이것이 항상 가능한 것은 아닙니다. "novalidate"를 사용하지 않고 비활성화하는 위의 접근 방식은 문제를 해결할 수있는 최선의 방법이었습니다.
Horatio Alderaan

2
숨겨진 필드를 사용하지 않는 방법에 동의합니다. '필수'속성을 제거하면 나중에 다시 표시해야하는 정보가 손실됩니다. 그러나 다시 활성화하면 유지됩니다.
Druckles

1
나는이 솔루션을 좋아하며 다른 입력의 선택된 값을 기반으로 가변적으로 표시되거나 숨겨진 입력이있는 양식이 있으면 잘 작동한다고 생각합니다. 이렇게하면 필요한 설정이 유지되고 양식을 제출할 수 있습니다. 또한 유효성 검사에 실패하고 사용자가 완전히 다른 작업을 수행하는 경우 추가 재설정이 필요하지 않습니다.
lewsid 2012 년

17

내 경우에는 문제는 다음과 같이 input type="radio" required숨겨져 있었습니다 .

visibility: hidden;

필요한 입력 유형이 경우에도이 오류 메시지가 표시됩니다 radio또는 checkboxdisplay: none;CSS 속성을.

UI에서 숨겨져 있고 required속성을 유지 해야하는 사용자 지정 라디오 / 확인란 입력만들려면 대신 다음을 사용해야합니다.

opacity: 0; CSS 속성


현재 선택 상자를 숨기고 js 및 css가있는 대체 js 상자를 표시하는 selectivity.js 라이브러리를 사용한다는 점을 제외하고는 동일한 문제가 있습니다. 필요한 경우 사용하면 다음과 같은 오류가 발생합니다. cny sugestion arround에서 어떻게 작동합니까?
Inzmam ul Hassan

@InzmamGujjar 내가 이해 한 것처럼 js 플러그인은 자체 클래스로 다른 선택 입력을 작성하고 있습니다. 플러그인 CSS 클래스를 변경하거나 name=""원래 입력 대신 생성 된 입력을 선택하십시오 .
거스

13

이전 답변 중 어느 것도 나를 위해 일하지 않았으며 required속성 이있는 숨겨진 필드가 없습니다 .

내 경우에는 문제가함으로써 발생 된 <form>후를 <fieldset>을 보유하고 첫 아이로 <input>required속성. <fieldset>문제를 해결하면 문제 가 해결되었습니다. 또는 양식을 양식으로 감쌀 수 있습니다. HTML5에 의해 허용됩니다.

Windows 7 x64, Chrome 버전 43.0.2357.130m에 있습니다.


힌트를 주셔서 감사합니다. 솔루션으로 해결하기 위해 관리하면 이상합니다.
Ben

고맙습니다.이 경우에도 문제였습니다.
fantasticrice

내 경우에는이 힌트가 도움이됩니다
Anja Ishmukhametova

2
Fieldsets도 내 문제였습니다. 내 경우에는, 대답은 여기에서 발견되었다 : stackoverflow.com/a/30785150/1002047은 (W3C의 유효성 검사기를 사용하여 질문의 유효성을 검사에서 HTML 이후) 크롬 버그가 나타납니다. 필드 세트를 div로 변경하면 문제가 해결되었습니다.
Eric S. Bullington

@ EricS.Bullington 지적 해 주셔서 감사합니다. 나는 그 대답을 몰랐다. 그 사용자로서, 나는 내 양식을 "슬라이스"하는 것으로 스스로 그것을 발견했습니다. 그건 그렇고, 크롬 버전 번호 시스템에 대해 모르겠지만 4 년 동안 124에서 130까지는 큰 단계처럼 보이지 않습니다 ...
Pere

9

체크 박스 입력에 오류가 발생하면 또 다른 가능성이 있습니다. 확인란이 기본값을 숨기고 다른 스타일로 대체하는 맞춤 CSS를 사용하는 경우 Chrome에서 유효성 검사 오류에 초점을 맞출 수없는 오류가 발생합니다.

내 스타일 시트에서 이것을 찾았습니다.

input[type="checkbox"] {
    visibility: hidden;
}

간단한 수정은 이것을 다음으로 대체하는 것이 었습니다.

input[type="checkbox"] {
    opacity: 0;
}

이것은 또한 내가 가장 잘 작동하는 것으로 밝혀졌습니다. 실제로 보이지 않는 폼 컨트롤 근처에 오류 메시지가 표시 될 수 있습니다.
Rob

8

필수 속성으로 필드를 숨겼을 수 있습니다 (표시 : 없음) .

모든 필수 필드가 사용자에게 표시되는지 확인하십시오. :)


7

나에게 이것은 <select>''값이 미리 선택된 옵션이 있는 필드가 있을 때 발생합니다 .

<select name="foo" required="required">
    <option value="" selected="selected">Select something</option>
    <option value="bar">Bar</option>
    <option value="baz">Baz</option>
</select>

불행히도이 방법은 자리 표시 자에 대한 유일한 브라우저 간 솔루션입니다 ( '선택'상자에 대한 자리 표시자는 어떻게합니까? ).

Chrome 43.0.2357.124에서 문제가 발생합니다.


7

양식 제출 중에 보이지 않는 필수 속성을 가진 필드가 있으면이 오류가 발생합니다. 해당 필드를 숨기려고 할 때 필요한 속성을 제거하면됩니다. 필드를 다시 표시하려는 경우 필요한 속성을 추가 할 수 있습니다. 이런 식으로 유효성 검사가 손상되지 않고 동시에 오류가 발생하지 않습니다.


힌트 : $("input").attr("required", "true"); 또는 $("input").prop('required',true);반대 할 수 있습니다 속성 / 속성 . >> 입력 필드에 jQuery 추가 필요remove
fWd82

7

Select2 Jquery 문제

HTML5 유효성 검사로 인해 숨겨진 유효하지 않은 요소에 초점을 맞출 수 없기 때문에 문제가 발생합니다. jQuery Select2 플러그인을 다룰 때이 문제가 발생했습니다.

솔루션 HTML5 validate 이벤트 바로 전에 조작 할 수 있도록 양식의 모든 요소에 대해 이벤트 리스너 on 및 'invalid'이벤트를 삽입 할 수 있습니다.

$('form select').each(function(i){
this.addEventListener('invalid', function(e){            
        var _s2Id = 's2id_'+e.target.id; //s2 autosuggest html ul li element id
        var _posS2 = $('#'+_s2Id).position();
        //get the current position of respective select2
        $('#'+_s2Id+' ul').addClass('_invalid'); //add this class with border:1px solid red;
        //this will reposition the hidden select2 just behind the actual select2 autosuggest field with z-index = -1
        $('#'+e.target.id).attr('style','display:block !important;position:absolute;z-index:-1;top:'+(_posS2.top-$('#'+_s2Id).outerHeight()-24)+'px;left:'+(_posS2.left-($('#'+_s2Id).width()/2))+'px;');
        /*
        //Adjust the left and top position accordingly 
        */
        //remove invalid class after 3 seconds
        setTimeout(function(){
            $('#'+_s2Id+' ul').removeClass('_invalid');
        },3000);            
        return true;
}, false);          
});

3

다음과 같은 코드가 있으면 해당 메시지가 표시됩니다.

<form>
  <div style="display: none;">
    <input name="test" type="text" required/>
  </div>

  <input type="submit"/>
</form>

나는 그것이 단지 예제를 만드는 것과 같다는 것을 알고 있습니다. 어떤 사람들은 코드로 일을 더 잘 이해합니다. D
Robert

3

예 .. 숨겨진 양식 컨트롤에 필수 필드가 있으면이 오류가 표시됩니다. 한 가지 해결책은 이 양식 컨트롤비활성화하는 것 입니다. 일반적으로 양식 컨트롤을 숨기면 해당 값에 대해 걱정하지 않기 때문입니다. 따라서이 양식 제어 이름 값 쌍은 양식을 제출하는 동안 전송되지 않습니다.


1
이 아이디어에 감사드립니다! 개별 요소가 필요한지 여부에 관계없이 때때로 숨겨지는 모든 양식 요소를 전환하는 것이 유용하므로 내 논리는 훌륭하고 간단합니다.)
Gabe Kopley

3

.removeAttribute("required")창을로드 할 때 숨겨진 요소를 시도 할 수 있습니다 . 문제의 요소가 자바 스크립트 (탭 형식)로 인해 숨겨진 것으로 표시 될 가능성이 높기 때문에

예 :

if(document.getElementById('hidden_field_choice_selector_parent_element'.value==true){
    document.getElementById('hidden_field').removeAttribute("required");        
}

이 작업을 수행해야합니다.

그것은 나를 위해 일했다 ... 건배


3

필수 필드가있는 일반 양식이 있고 양식을 제출 한 다음 제출 후 바로 숨기면 (Javascript로) 유효성 검사 기능이 작동 할 시간이없는 다른 가능한 원인이 있으며 이전의 모든 답변에서 다루지 않았습니다.

유효성 검사 기능은 필수 필드에 초점을 맞추고 오류 유효성 검사 메시지를 표시하지만 해당 필드가 이미 숨겨져 있으므로 "name = ''의 유효하지 않은 양식 컨트롤에 포커스를 둘 수 없습니다." 나타납니다!

편집하다:

이 경우를 처리하려면 제출 핸들러 내에 다음 조건을 추가하십시오.

submitHandler() {
    const form = document.body.querySelector('#formId');

    // Fix issue with html5 validation
    if (form.checkValidity && !form.checkValidity()) {
      return;
    }

    // Submit and hide form safely
  }

편집 : 설명

제출시 양식을 숨기고 있다고 가정하면이 코드는 양식이 유효해질 때까지 양식 / 필드가 숨겨지지 않도록합니다. 따라서 필드가 유효하지 않으면 브라우저는이 필드가 여전히 표시되어 있으므로 아무런 문제없이 필드에 집중할 수 있습니다.


3

여전히 나를 놀라게하는 것들이 있습니다 ... 저는 두 개의 다른 엔티티에 대해 역동적 인 행동 양식을 가지고 있습니다. 한 엔터티에는 다른 엔터티가 아닌 일부 필드가 필요합니다. 따라서 엔티티에 따라 JS 코드는 다음과 같이 수행됩니다. $ ( '# periodo'). removeAttr ( 'required'); $ ( "# periodo-container"). hide ();

그리고 사용자가 다른 엔티티를 선택할 때 : $ ( "# periodo-container"). show (); $ ( '# periodo'). prop ( '필수', 참);

그러나 때로는 양식을 제출할 때 "이름이 periodo 인 잘못된 양식 컨트롤"에 초점을 맞출 수없는 문제가 나타납니다 (ID와 이름에 동일한 값을 사용하고 있음).

이 문제를 해결하려면 '필수'를 설정하거나 제거하는 입력이 항상 표시되도록해야합니다.

그래서 내가 한 일은 :

$("#periodo-container").show(); //for making sure it is visible
$('#periodo').removeAttr('required'); 
$("#periodo-container").hide(); //then hide

그게 내 문제를 해결했다 ... 믿을 수없는.



2

각도 사용의 경우 :

ng-required = "boolean"

값이 true 인 경우 html5 '필수'속성 만 적용됩니다.

<input ng-model="myCtrl.item" ng-required="myCtrl.items > 0" />

2

나는 </form>태그를 닫지 않고 동일한 페이지에 여러 양식을 가지고 있기 때문에이 문제를 직접 시작했다고 대답하기 위해 여기에 왔습니다 . 첫 번째 양식은 다른 곳에서 양식 입력에 대한 검증을 포함하도록 확장 될 것입니다. THOSE 양식이 숨겨져 있기 때문에 오류가 발생했습니다.

예를 들어 :

<form method="POST" name='register' action="#handler">


<input type="email" name="email"/>
<input type="text" name="message" />
<input type="date" name="date" />

<form method="POST" name='register' action="#register">
<input type="text" name="userId" />
<input type="password" name="password" />
<input type="password" name="confirm" />

</form>

트리거

이름이 'userId'인 잘못된 양식 컨트롤은 포커스를 맞출 수 없습니다.

name = 'password'인 유효하지 않은 양식 제어는 초점을 맞출 수 없습니다.

이름이 'confirm'인 잘못된 양식 컨트롤은 포커스를 맞출 수 없습니다.


2

이 문제를 해결하는 방법에는 여러 가지가 있습니다

  1. 양식에 novalidate를 추가하지만 양식 유효성 검사가 제거되어 사용자가 잘못된 정보를 입력하므로 완전히 잘못되었습니다.

<form action="...." class="payment-details" method="post" novalidate>

  1. 필수 필드에서 필수 속성을 제거하면 양식 유효성 검증이 다시 한 번 제거되므로 잘못된 속성도 제거 할 수 있습니다.

    이 대신에 :

<input class="form-control" id="id_line1" maxlength="255" name="line1" placeholder="First line of address" type="text" required="required">

   Use this:

<input class="form-control" id="id_line1" maxlength="255" name="line1" placeholder="First line of address" type="text">

  1. 다른 옵션을 사용하는 대신 양식을 제출하지 않을 경우 필수 필드를 사용하지 않을 수 있습니다. 이것은 내 의견으로는 권장되는 솔루션입니다.

    처럼:

<input class="form-control" id="id_line1" maxlength="255" name="line1" placeholder="First line of address" type="text" disabled="disabled">

또는 자바 스크립트 / jquery 코드를 통해 비활성화하면 시나리오에 따라 다릅니다.


2

Angular JS를 사용할 때도 같은 문제가 발견되었습니다. ng-hide 와 함께 필수 를 사용 했기 때문에 발생했습니다 . 이 요소가 숨겨져있는 동안 제출 버튼을 클릭하면 오류가 발생했습니다 . 드디어!

예를 들어 ng-hide를 필수와 함께 사용하는 경우 :

<input type="text" ng-hide="for some condition" required something >

대신 ng-pattern으로 필수를 교체하여 해결했습니다.

해결책의 예 :

<input type="text" ng-hide="for some condition" ng-pattern="some thing" >

1

다른 AngularJS 1.x 사용자의 경우이 오류는 컨트롤을 완료 할 필요가 없을 때 폼 컨트롤을 DOM에서 완전히 제거하는 대신 표시하지 못하게하기 때문에 발생했습니다.

/ ng-if대신 에 사용하여이 문제를 해결했습니다.ng-showng-hide유효성 검사가 필요한 양식 컨트롤을 포함하는 div 를 .

이것이 동료 사용자를 도울 수 있기를 바랍니다.


1

위의 모든 솔루션과 다르기 때문에 사례를 설명하겠습니다. 올바르게 닫히지 않은 html 태그가 있습니다. 요소는 아니 required 었지만hidden div

내 경우의 문제는 type="datetime-local" 양식 제출시 유효성을 검사 한.

나는 이것을 바꿨다

<input type="datetime-local" />

그것에

<input type="text" />

1

이 답변 중 어느 것도 또는 다른 Google 검색 결과로 문제를 해결했기 때문에 여기에 답변하고 싶었습니다.

나를 위해 그것은 필드 세트 또는 숨겨진 입력과 관련이 없습니다.

max="5"예를 들어 사용 하면이 오류가 발생 한다는 것을 알았습니다 . 내가 사용하면 maxlength="5" ... 오류가 없습니다.

오류와 오류 지우기를 여러 번 재현 할 수있었습니다.

이 코드를 사용하면 오류가 발생하는 이유는 아직까지로, 알 수없는 상태는 심지어 내가 믿습니다 "분"하지 않고, 유효해야합니다.


광산은 비슷한 방식으로 해결되었지만 구성은 min='-9999999999.99' max='9999999999.99'입니다.
Ricardo Green

0

또는 HTML5 자리 표시 자 속성을 사용하는 또 다른 완벽한 대답은 js 유효성 검사를 사용할 필요가 없습니다.

<input id="elemID" name="elemName" placeholder="Some Placeholder Text" type="hidden" required="required">

Chrome은 초점을 맞추기 위해 비어 있거나 숨겨진 필수 요소를 찾을 수 없습니다. 간단한 해결책.

희망이 도움이됩니다. 이 솔루션으로 완전히 정렬되었습니다.


0

나는 같은 문제로 여기에 왔습니다. 나에게 (필요에 따라 숨겨진 요소를 주입하는 것, 즉 직업 앱에서의 교육)에는 필요한 플래그가있었습니다.

내가 깨달은 것은 문서가 준비된 것보다 검사기가 주입 된 것보다 빠르게 발사되었다는 것입니다.

내 원래 ng-required 태그는 공개 태그 (vm.flags.hasHighSchool)를 사용하고있었습니다.

필요한 ng-required = "vm.flags.highSchoolRequired == true"를 설정하기 위해 전용 플래그를 생성하여 해결했습니다.

해당 플래그를 설정하는 데 10ms 콜백을 추가하고 문제가 해결되었습니다.

 vm.hasHighSchool = function (attended) {

        vm.flags.hasHighSchool = attended;
        applicationSvc.hasHighSchool(attended, vm.application);
        setTimeout(function () {
            vm.flags.highSchoolRequired = true;;
        }, 10);
    }

HTML :

<input type="text" name="vm.application.highSchool.name" data-ng-model="vm.application.highSchool.name" class="form-control" placeholder="Name *" ng-required="vm.flags.highSchoolRequired == true" /></div>

실제로 귀하의 솔루션은 매우 위험합니다. CPU 속도가 느린 사람은 여전히 ​​같은 오류가 발생합니다. 일반적인 경쟁 조건 일 것입니다. 아마도 오래된 스마트 폰이 영향을받을 수 있습니다. 따라서이 솔루션에주의하십시오.
Drachenfels

0

필수 속성이있는 양식의 모든 컨트롤에 이름 속성이 설정되어 있는지 확인하십시오.


0

채워지지 않은 필수 필드가있는 양식을 제출했기 때문에이 오류가 발생했습니다.

브라우저가 필수 필드에 집중하여 사용자에게 필수 필드를 경고하려고했지만 해당 필수 필드가 표시 없음 div에 숨겨져 브라우저가 해당 필드에 집중할 수 없기 때문에 오류가 발생했습니다. 보이는 탭에서 제출하고 필수 필드가 숨겨진 탭에 있었으므로 오류가 발생했습니다.

수정하려면 필수 필드가 채워지도록 제어해야합니다.


0

양식에 필수 속성이있는 숨겨진 입력이 있기 때문입니다.

필자의 경우 선택 상자가 있었고 인라인 스타일을 사용하여 jquery 토크 나이저에 의해 숨겨져 있습니다. 토큰을 선택하지 않으면 양식 제출시 브라우저에서 위의 오류가 발생합니다.

그래서 아래 CSS 기술을 사용하여 수정했습니다.

  select.download_tag{
     display: block !important;//because otherwise, its throwing error An invalid form control with name='download_tag[0][]' is not focusable.
    //So, instead set opacity
    opacity: 0;
    height: 0px;

 }

0

양식에 사용할 HTML 요소를 복제 할 때 동일한 오류가 발생했습니다.

(부분적으로 완전한 양식이 있으며 템플릿이 삽입 된 다음 템플릿이 수정됩니다)

오류가 복제 된 버전이 아닌 원래 필드를 참조하고있었습니다.

유효성 검사를 실행하기 전에 양식이 자체적으로 다시 평가되도록하는 방법을 찾을 수 없었습니다 (현재 존재하지 않는 이전 필드에 대한 참조를 제거하기를 바랍니다).

이 문제를 해결하기 위해 원래 요소에서 필수 속성을 제거하고 양식에 삽입하기 전에 복제 된 필드에 동적으로 추가했습니다. 양식은 이제 복제 및 수정 된 필드의 유효성을 올바르게 검사합니다.

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