Функция Onsubmit срабатывает в Safari, даже если требуемый ввод пуст

Атрибут Обязательный не работает в Safari.

Чтобы исправить это, я использую Webshim. Все работало отлично, пока я не заметил, что когда я использую onsubmit в теге формы, он срабатывает при отправке, независимо от того, что некоторые обязательные входные данные пусты. Вы видите «Пожалуйста, заполните это поле» на входе, но функции onsubmit все равно срабатывают.

<form onsubmit="alert('hi')" action="#">
  <input placeholder="native input works" required>
  <input type="submit">
</form>

Вот как я инициализирую Webshim:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/webshim/1.16.0/dev/polyfiller.js"></script>
    <script> 
        webshim.activeLang('en');
        webshims.polyfill('forms');
        webshims.cfg.no$Switch = true;
    </script>

Вот вам рабочий пример. Вы можете попробовать это в Safari и в Chrome, и вы увидите, что оповещение срабатывает в Safari, а не в Chrome.

https://jsfiddle.net/3pxsvxxj/

Пожалуйста, мне нужно решить это, и я не могу найти способ.

Ваше здоровье.


person Juan Manuel Masud    schedule 16.02.2017    source источник
comment
Можете ли вы поделиться частью кода, где вы инициализируете webshim?   -  person Tyler Roper    schedule 17.02.2017
comment
Прости, Санти, я забыл эту деталь. Я добавил это в пост.   -  person Juan Manuel Masud    schedule 17.02.2017


Ответы (1)


Как вы сказали, браузер Safari не поддерживает атрибут required, как указано здесь.

Если вы обратитесь к этому вопросу, у него есть альтернативы, которые обеспечивают функциональность .

И поскольку вы сказали, что используете webshim, обратитесь к этому ответу на вопрос, который я связал, в котором приводится пример использования webshim:

В настоящее время Safari не поддерживает обязательный атрибут ввода. http://caniuse.com/#search=required

Чтобы использовать «обязательный» атрибут в Safari, вы можете использовать «webshim».

1 - Скачать вебшим

2 - Поместите этот код:

<head>
    <script src="js/jquery.js"></script>
    <script src="js-webshim/minified/polyfiller.js"></script>
    <script> 
        webshim.activeLang('en');
        webshims.polyfill('forms');
        webshims.cfg.no$Switch = true;
    </script>
</head>
person Mor Paz    schedule 16.02.2017
comment
Привет, Мор, поэтому я сказал, что использовал Webshim для решения проблемы, которая не работает в Safari. Но не та проблема, которую я описал в посте. - person Juan Manuel Masud; 17.02.2017
comment
Да, все это уже есть в моем коде. Я добавил это в пост. Webshim решает мою проблему с Required inputs, но это не мешает функции отправки запускаться. - person Juan Manuel Masud; 17.02.2017