Недійсний елемент форми з ім'ям = '' не фокусується


671

У мене гостра проблема на моєму веб-сайті. У Google Chrome деякі клієнти не можуть перейти на мою сторінку оплати. При спробі подати форму я отримую цю помилку:

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

Це з консолі JavaScript.

Я читав, що проблема може бути пов’язана з прихованими полями, що мають необхідний атрибут. Тепер проблема полягає в тому, що ми використовуємо .net веб-форми, необхідні валідатори поля, а не необхідний атрибут html5.

Здається випадковим, хто отримує цю помилку. Чи є хтось, хто знає рішення для цього?


11
Якщо ви думаєте, що це може бути пов’язано з прихованими обов'язковими полями, можливо, ви повинні перевірити, чи в деяких випадках ці поля залишаються порожніми? Наприклад, якщо ви заповнили user_id з сеансу чи щось подібне, в деяких випадках воно може залишатися порожнім?
dkasipovic

1
Домовились. Відкрийте консоль розробника (F12) в Google Chrome і вивчіть значення полів, щоб побачити, чи є значення цих полів порожніми.
Трілла з ваніллю

Дякую за Ваш коментар Це не робить ніякого сенсу для мене, хоча? У мене проста форма asp.net, яка використовує елементи керування формою asp.net. Управління введенням генерується рамкою.
mp1990

Я перевірив, чи є значення в полях введення. У мене є одне приховане поле введення, яке також має значення.
mp1990

3
Я думаю, це трапляється, коли поле є обов'язковим, але воно не є "видимим" у загальних рисах. Це трапляється зі мною у формі, розділеній на кілька вкладок, поле, яке викликало помилку, знаходиться на вкладці, яка не є активною на момент подання. Я видалив потрібний атрибут із поля та зробив конкретну перевірку
TexWiller

Відповіді:


817

Ця проблема виникає в Chrome, якщо поле форми не вдалося перевірити, але через те, що відповідний недійсний елемент керування не фокусується, спроба браузера відобразити повідомлення "Будь ласка, заповніть це поле" поруч із ним .

Контроль форми може не бути орієнтованим на час запуску перевірки з кількох причин. Два описані нижче сценарії є найвидатнішими причинами:

  • Поле не має значення відповідно до сучасного контексту ділової логіки. У такому сценарії відповідний елемент керування повинен бути видалений з DOM або він не повинен бути позначений requiredатрибутом у цій точці.

  • Передчасна перевірка може статися через натискання користувачем клавіші ENTER на вході. Або користувач, натиснувши кнопку / елемент керування входом у формі, яка неправильно визначила typeатрибут керування. Якщо для атрибуту типу кнопки не встановлено значення button, Chrome (або будь-який інший веб-переглядач для цього питання) здійснює перевірку щоразу, коли натискається кнопка, оскільки submitце значення за замовчуванням для кнопкиtype атрибута .

    Щоб вирішити цю проблему, якщо у вас є кнопка на сторінці , що робить що - то інше, окрім відправити або скидання , завжди пам'ятайте , щоб зробити це: <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поле, де значення за замовчуванням не було розділене рівномірно за розміром кроку. Зміна розміру кроку вирішила проблему.
Джеймс Скотт

3
@IgweKalu хороший дзвінок. Я зіткнувся з цим впроваджуючим TinyMCE над полем textarea. TinyMCE приховує оригінальне поле форми (яке було "обов’язково") і запускає цю помилку. Вирішіть, видаліть із форми прихований атрибут "необхідного" та покладітьсь на інший метод, щоб забезпечити його заповнення.
Джон

355

Додавання novalidateатрибуту до форми допоможе:

<form name="myform" novalidate>

41
Це не ризик для безпеки. (Покладаючись на перевірку на стороні клієнта.) Це проблема юзабіліті.
Юкка К. Корпела

9
Я спробував і виявив, що "недійсний" не потрібно! Я просто дав назву своїй формі і все працювало чудово!
Сонячний Шарма

33
Я спробував і виявив, що "недійсний" дійсно потрібно. Лише додавання назви форми не працює.
Jeff Tian

13
Додавання novalidate також зупиняє перевірку на стороні клієнта, наприклад, з дорогоцінним каменем Rails Simple Form. Краще, щоб проблемні поля не були потрібні, відповідно до відповіді Ankit + коментар Девіда Брунова.
сталь

9
Я виявив, що "Недійсний елемент керування формою з ім'ям =" "не фокусується." також показує, чи є входи в<fieldset>
oscargilfc

260

У ваших form, ви , можливо, приховано , inputмає requiredатрибут:

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

formНе може зосередитися на тих елементах, ви повинні видалити requiredз усіх прихованих входів, або реалізувати функцію перевірки в JavaScript , щоб впоратися з ними , якщо ви дійсно потребуєте прихованого входу.


7
Я помітив, що це може траплятися і з полями типу "електронна пошта", які не відображаються. Проблема, спричинена Chrome при спробі перевірити формат.
Девід Брунов

3
Це не потрібно required. patternодин може спричинити цю проблему.
Pacerier

3
У моєму випадку поля форми не були type = "приховані", вони просто не переглядалися, наприклад, у формі з вкладками.
Джош Мак

У мене є дві форми, одна з якою, <input type="hidden" required />а інша з an <input type="text" style="display: none" required />, і єдиною, яка відображає помилку в Chrome, є display: none, а "hidden"одна - це добре.
Пере

Це правильна відповідь. Chrome намагається перевірити поле, яке було приховано у CSS. Перешкоджає показувати попереджувальне повідомлення про перевірку, і він попереджає вас про цей факт.
надсвітні

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.
});

Також, можливо, це дублікат "Недійсний контроль форми" лише в Google Chrome


6
Якщо ви хочете проголосувати цю відповідь, будь ласка, залиште коментар, щоб повідомити мені, чому. Я б скоріше видалив відповідь, якщо вона містить погану інформацію, ніж залишати її тут і вводити в оману громаду.
Гораціо Альдераан

1
Я не буду відмовлятись у голосуванні, але відчуваю, що цей код використовує грубу силу "маскування проблеми". Він, безумовно, має корисність при роботі зі застарілим кодом, але для нових проектів я рекомендую трохи складніше подивитися на вашу проблему. Ця відповідь також стосується використання "невалідації" у тезі форми, але це трохи видніше. +1 для інвалідів замість необхідного видалення.
Джонатан ДеМаркс

1
Щоб дати трохи контексту, я потрапив саме в ситуацію "справи зі спадковим кодом", коли я зіткнувся з цією проблемою. Я повністю згоден, що це хак. Набагато краще розробити розмітку так, щоб не стикатися з цією ситуацією. Однак із застарілими кодовими базами та негнучкими системами CMS це не завжди можливо. Вище підхід щодо відключення, а не використання "novalidate" був найкращим способом, який я міг придумати, щоб вирішити проблему.
Гораціо Альдераан

2
Я згоден з підходом відключення прихованих полів. Якщо вилучити їхні "необхідні" атрибути, втрачається інформація, якщо вони будуть показані знову пізніше. Однак, повторне включення їх збереже це.
Друклес

1
Мені подобається це рішення, і я думаю, що воно добре працює, коли у вас є форма з входами, які змінно відображаються або приховуються на основі вибраних значень інших входів. Це зберігає необхідні налаштування та все ще дозволяє форму надсилати. Ще краще, якщо перевірка не вдасться і користувач робить щось зовсім інше, додаткові скидання не потрібні.
lewsid

17

У моєму випадку проблема полягала в тому, input type="radio" requiredщо приховано:

visibility: hidden;

Це повідомлення про помилку також відображатиметься, якщо потрібний тип введення radioабо checkboxмає display: none;властивість CSS.

Якщо ви хочете створити власні входи для радіо / прапорців, де вони повинні бути приховані від інтерфейсу користувача та зберігати requiredатрибут, замість цього слід використовувати:

opacity: 0; Властивість CSS


те саме питання, за винятком того, що я використовую бібліотеку selectivity.js, яка приховує поточне поле вибору та показує альтернативне поле js з js та css. коли я використовую необхідні для нього, видає цю помилку form-field.js: 8 create: 1 Неправильний контроль форми з name = 'listing_id' не може бути орієнтованим. cny sugestion Як я можу це обробити.
Inzmam ul Hassan

@InzmamGujjar, як я зрозумів, ваш js плагін створює інший вибір даних із власними класами. Можливо, змінити класи CSS-плагінів або вибрати створений вхід name=""замість оригінального?
Гас

13

Жодна з попередніх відповідей не працювала для мене, і у мене немає прихованих полів з required атрибутом.

У моєму випадку проблема була викликана мають , <form>а потім в <fieldset>якості свого першого дитини, який тримає <input>з requiredатрибутом. Видалення <fieldset>вирішеної проблеми. Або ви можете загорнути його форму; це дозволено HTML5.

Я на Windows 7 x64, Chrome версія 43.0.2357.130 м.


Була така ж проблема, дякую за підказку. Вдалося вирішити це своїм рішенням, це не дивно.
Бен

Дякую, ця проблема була і в моєму випадку.
fantasticrice

у моєму випадку ця підказка допоможе мені
Аня Ішмухаметова

2
Польові набори теж були моєю проблемою. У моєму випадку тут було знайдено відповідь: stackoverflow.com/a/30785150/1002047 Виявляється помилкою Chrome (оскільки HTML, про який йдеться, підтверджує валідатор W3C). Просто змінивши набір полів на діви вирішив проблему.
Ерік С. Буллінгтон

@ EricS.Bullington дякую за те, що вказали. Я не знав про цю відповідь; як цей користувач, я виявив, що сам "вирізав" шматочки моєї форми. До речі, я не знаю про систему нумерації версій Chrome, але від 124 до 130 за 4 роки це не схоже на величезний крок ...
Пер,

9

Ще одна можливість, якщо ви отримуєте помилку на вході прапорця. Якщо ваші прапорці використовують спеціальний CSS, який приховує типовий параметр, і замінює його іншим стилем, це також спричинить не фокусируемую помилку в Chrome при помилці перевірки.

Я знайшов це у своєму стилі:

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

Просте виправлення полягало в тому, щоб замінити його таким:

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

Це було також рішення, яке я вважаю, що найкраще працює. Це дозволяє фактично відображати повідомлення про помилку поблизу елементів невидимої форми.
Роб

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>

На жаль, це єдине крос-браузерне рішення для заповнювача ( Як зробити я заповнювача для вікна "select"? ).

Проблема виходить на Chrome 43.0.2357.124.


7

Якщо у вас є поле з необхідним атрибутом, яке не видно під час подання форми, ця помилка буде видалена. Ви просто видалите необхідний атрибут, коли намагаєтесь приховати це поле. Ви можете додати необхідний атрибут у випадку, якщо ви хочете знову показати поле. Таким чином, ваша перевірка не буде порушена, і в той же час помилка не буде викинута.


Підказка: $("input").attr("required", "true"); або $("input").prop('required',true);навпаки , ви можете атрибут / властивість . >> Додайте до поля введення jQueryremove
fWd82

7

Для проблеми Select2 Jquery

Проблема пов'язана з тим, що перевірка HTML5 не може фокусувати прихований недійсний елемент. Я зіткнувся з цим питанням, коли я мав справу з плагіном jQuery Select2.

Вирішення Ви можете ввести слухача події до "недійсного" події кожного елемента форми, щоб ви могли маніпулювати безпосередньо перед валідацією події HTML5.

$('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
Роберт,

3

Так. Якщо для прихованого контролю форми потрібне поле, воно показує цю помилку. Одним із варіантів рішення було б відключення цього контролю форми . Це тому, що зазвичай, якщо ви ховаєте контроль форми, це тому, що ви не переймаєтесь його значенням. Тож пара цього значення імені контролю форми не надсилатиметься під час подання форми.


1
Дякую за цю ідею! Мені було корисно перемикати ВСІ, іноді приховані елементи форми, незалежно від того, потрібні чи ні окремі, тому моя логіка є приємною і простою :)
Гейб Kopley

3

Ви можете спробувати .removeAttribute("required") ті елементи, які приховані під час завантаження вікна. оскільки цілком ймовірно, що розглянутий елемент позначений прихованим через javascript (форми з вкладками)

напр

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

Це повинно виконати завдання.

Це працювало на мене ... ура


3

Інша можлива причина, яка не міститься у всіх попередніх відповідях, коли у вас є звичайна форма з обов'язковими полями, і ви подаєте форму, а потім приховуєте її безпосередньо після подання (за допомогою JavaScript), не даючи часу на функціонування перевірки.

Функціонал перевірки спробує зосередити увагу на необхідному полі та покаже повідомлення про перевірку помилок, але поле вже приховано, тому "Недійсний елемент керування формою з ім'ям =" "не фокусується." з'являється!

Редагувати:

Щоб вирішити цей випадок, просто додайте наступну умову до вашого обробника подання

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 ('обов'язково'); $ ("# періодо-контейнер"). hid ();

і коли користувач вибирає іншу сутність: $ ("# періодо-контейнер"). show (); $ ('# періодо'). prop ('потрібно', правда);

Але іноді, коли форма подається, проблема видається: "Недійсне управління формою з ім'ям = періодо" 'не фокусується (я використовую те саме значення для id та імені).

Щоб вирішити цю проблему, ви повинні переконатися, що вхід, де ви встановлюєте або видаляєте "обов'язковий", завжди видно.

Отже, що я зробив:

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

Це вирішило мою проблему ... неймовірно.


3

У моєму випадку ..

ng-showвикористовувався.
ng-ifбуло поставлено на його місце і виправлено мою помилку.


Врятував мені день. Спасибі
Syed Atir Mohiuddin

2

Для кутового використання:

ng-Required = "булева"

Це застосує атрибут html5 'обов'язковий' лише у тому випадку, якщо значення є істинним.

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

2

Я прийшов сюди, щоб відповісти, що я сам запустив це питання на основі НЕ закриття </form> тег І не маю на одній сторінці кілька форм. Перша форма поширюватиметься на те, щоб шукати перевірку на введення форми з інших місць. Оскільки ці форми приховані, вони викликали помилку.

наприклад, наприклад:

<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' не фокусується.

Недійсний елемент форми з ім'ям = 'пароль' не фокусується.

Недійсний елемент форми з ім'ям = "підтвердити" не фокусується.


2

Існує багато способів виправити подібне

  1. Додайте недійсну форму до своєї форми, але її абсолютно неправильно, оскільки це видалить перевірку форми, що призведе до неправильної інформації, введеної користувачами.

<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">

або відключити його через код JavaScript / jquery, залежить від вашого сценарію.


2

Я знайшов таку ж проблему при використанні Angular JS. Це було викликано використанням необхідних разом з ng-hid . Коли я натискав кнопку подання, коли цей елемент був прихованим, тоді сталася помилка Неправильний елемент управління з именем = '' не фокусується.нарешті!

Наприклад, використання ng-hid разом із необхідними:

<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-show/ng-hide на діві, що містить контроль форми, що вимагає перевірки.

Сподіваюся, це допоможе вам, хтось із кращих користувачів справи.


1

Дозвольте викласти свою справу, оскільки вона відрізнялася від усіх вищезазначених рішень. У мене був тег HTML, який був закритий неправильно. елемента не було required, але він був вбудований у hiddenдів

Проблема в моєму випадку полягала в тому type="datetime-local", що, з якоїсь причини, було підтверджено при поданні форми.

я змінив це

<input type="datetime-local" />

в це

<input type="text" />

1

Я хотів відповісти тут, оскільки НІКОЛИ з цих відповідей чи будь-якого іншого результату Google не вирішив проблему для мене.

Для мене це не мало нічого спільного з наборами полів або прихованими входами.

Я виявив, що якби я використав max="5"(наприклад), це призведе до цієї помилки. Якщо я використовував maxlength="5" ... помилки немає.

Мені вдалося кілька разів відтворити помилку та очистити помилку.

Я досі не знаю, чому використання цього коду видає помилку, наскільки це стверджує, що воно повинно бути дійсним, навіть без "хв", я вважаю.


Шахта була вирішена аналогічним способом, але конфігурація була min='-9999999999.99' max='9999999999.99'.
Рікардо Грін

0

Крім того, ще одна непростою відповідь - використовувати атрибут HTML5 Placeholder, тоді не потрібно використовувати перевірки js.

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

Chrome не зможе знайти жодних порожніх, прихованих та потрібних елементів, на яких слід зосередити увагу. Просте рішення.

Сподіваюся, що це допомагає. Я повністю відсортований з цим рішенням.


0

Я прийшов сюди з тією ж проблемою. Для мене (введення прихованих елементів за потребою - тобто освіта в додатку для роботи) були потрібні прапори.

Я зрозумів, що валідатор стріляв по введеному швидше, ніж готовий документ, тому скаржився.

Мій оригінальний тег, необхідний для ng, використовував тег видимості (vm.flags.hasHighSchool).

Я вирішив, створивши спеціальний прапор, щоб встановити потрібні ng-Required = "vm.flags.highSchoolRequired == true"

Я додав 10 мс зворотного дзвінка під час встановлення цього прапора і проблема була вирішена.

 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>

Насправді ваше рішення є дуже-дуже ризикованим. Будь-хто з повільним процесором все одно отримає таку ж помилку. Це (або буде) типовий стан гонки. Можливо, це вплине на старі смартфони. Тож будьте обережні з цим рішенням.
Drachenfels

0

Переконайтеся, що всі елементи керування у вашій формі з необхідним атрибутом також мають набір атрибутів імені


0

Ця помилка трапилася зі мною, оскільки я надсилав форму із заповненими обов'язковими полями.

Помилка виникла через те, що браузер намагався зосередити увагу на потрібних полях, щоб попередити користувача, що поля потрібні, але ці потрібні поля були приховані на дисплеї жодного діва, тому браузер не міг зосередитись на них. Я надсилав повідомлення з видимої вкладки, і обов’язкові поля знаходились у прихованій вкладці, отже, помилка.

Щоб виправити, переконайтеся, що ви керуєте заповненими необхідними полями.


0

Це тому, що у формі є прихований вхід з необхідним атрибутом.

У моєму випадку я мав поле вибору, і це приховано jquery tokenizer, використовуючи стиль inline. Якщо я не вибираю жоден маркер, браузер видає вказану вище помилку під час подання форми.

Отже, я виправив це за допомогою наведеної нижче методики 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-елемента для використання у формі.

(У мене є частково повна форма, у яку вводиться шаблон, а потім шаблон змінюється)

Помилка посилалась на оригінальне поле, а не на клоновану версію.

Я не зміг знайти жодних методів, які змусили б форму переоцінити себе (сподіваючись, що вона позбудеться будь-яких посилань на старі поля, які зараз не існують) перед запуском перевірки.

Щоб обійти цю проблему, я видалив потрібний атрибут із початкового елемента та динамічно додав його до клонованого поля перед тим, як ввести його у форму. Тепер форма правильно перевіряє клоновані та модифіковані поля.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.