Избегайте полей формы при предупреждении, что пользователь покидает страницу без сохранения изменений формы

Всем привет,

Следующий код предупреждает пользователя, что он / она не отправил изменения формы, когда он / она пытается покинуть веб-страницу, не нажимая кнопку отправки.

 formmodified = 0;
    $('form *').change(function(){
        formmodified = 1;
    });
    window.onbeforeunload = confirmExit;
    function confirmExit() {
        if (formmodified == 1) 
        {
            return "You need to save your changes before you leave the page";
        }
    }
    $("input[name='btnPost']").click(function() 
    {
        formmodified = 0;
    });

Он прекрасно работает, но мне нужен этот код, чтобы забыть о поле в форме.

Это поле для загрузки фото-файла:

<input type="file" name="photo">

При таком коде, сообщение, предупреждающее о том, что вы покидаете страницу, отображается перед заполнением остальной части формы, и это довольно запутанно для пользователей, поэтому мне нужно избегать этого поля.

большое спасибо

2 ответа

Решение

Использовать этот;

$('form *').change(function(){
    if ($(this).attr("name") != "photo") {
      formmodified = 1;
    }
});

Если вы хотите исключить элемент из селектора, вы можете использовать :not(),

$('form *:not(input[name="photo"])').change(function(){
    formmodified = 1;
});

Или с функцией:

$('form *').not('input[name="photo"]').change(function(){
Другие вопросы по тегам