2014-01-22 5 views
3

Я столкнулся с этой проблемой и до сих пор не имею понятия об этом.Сброс формы удаляет проверку HTML 5 на входном файле

Это мой код на jsfiddle.

Как вы можете видеть, нажатие кнопки «Загрузить» приведет к проверке HTML на входе файла и появится сообщение об ошибке.

Но если я выберу файл, нажмите кнопку «Сброс», чтобы сбросить форму. После этого я нажимаю «Загрузить» (отправить форму), проверка не прошла.

Я также пытаюсь использовать метод javascript reset(), но проблема все еще осталась.

Обратите внимание, что я использую браузер Google Chrome.

Есть ли у кого-нибудь идеи по этой проблеме?

Или я только что столкнулся с ошибкой проверки HTML?

+0

Что такое проверка, о которой вы говорите, это то, что вы отправили или написано для проверки валидации и что вы проверяете? EG трудно извиниться –

+0

он говорит о единственном требуемом вводе (type = file) ... он не может быть пустым – rafaelcastrocouto

+0

Какой браузер вы используете? И попробуйте проверить консоль ошибок для любой ошибки javascript. Как вы jsFiddle демо работает с Firefox –

ответ

0

Только браузер У меня были проблемы с этим было в Chrome. Ниже будет решить проблему для меня (не знаю, почему это работает)

$("button[type='reset']").on('click', function() { 
    $("#file").replaceWith('<input id="file" type="file" required />'); 
    return true; 
}); 

JSFiddle

+0

Благодарим вас за ответ. Я думаю, что это ошибка браузеров (проверена на Chrome, Safari, IE 11). Во всяком случае, я буду делать некоторые работы javascript, чтобы решить эту проблему. –

+1

@ mr.d Надеюсь, он скоро будет исправлен в хроме. https://code.google.com/p/chromium/issues/detail?id=336818 – Danny

2

Похоже, это ошибка с Chrome.
Вы можете увидеть разницу, добавив ниже CSS в поле ввода.

input:invalid { 
    color: blue; 
} 

При сбросе на FF поле ввода становится недействительным, но в Chrome это не так. В Chrome, если вы выберете файл, а затем снова отобразите экран выбора, а затем отмените его, поле станет недействительным. Это похоже на единственный способ сбросить поле ввода.

Похоже, что вам нужно будет добавить код.