2017-02-16 2 views
3

Обязательный атрибут не работает в Safari.Функция Onsubmit запускается на 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, и вы увидите предупреждение Alert на сафари, а не в хроме.

https://jsfiddle.net/3pxsvxxj/

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

Cheers.

+0

Можете ли вы поделиться часть кода, где вы инициализируете webshim? – Santi

+0

Простите, Санти, я забыл эту деталь. Я добавил его в сообщение. –

ответ

0

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

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

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

В это время, Safari не поддерживает «необходимый» вход атрибут. http://caniuse.com/#search=required

Чтобы использовать 'необходимый атрибут' на Safari, Вы можете использовать 'webshim'

1 - Скачать webshim

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> 
+0

Привет, Моему, поэтому я сказал, что использовал Webshim для решения «требуемого», не работающего над Safari. Но не проблема, которую я описал в этой статье. –

+0

Неплохо, посмотрите обновленный ответ –

+0

Да, у меня уже есть все, что в моем коде. Я добавил его в сообщение. Webshim решает мою проблему с «необходимыми» входами, но не останавливает функцию onsubmit для запуска. –