Не позволяя людям обойти мою проверку формы, переходя в другое место

0

У меня есть форма, которая позволяет пользователям редактировать данные элемента в моей базе данных. Мне требуется, чтобы каждый элемент имел сопроводительное изображение, поэтому я проверяю элемент item с правилом проверки правильности jquery.

В настоящее время пользователь выберет элемент и сгенерирует форму, содержащую сведения о деталях, в разделе "Категория"> "Подкатегория"> "Элемент"> "Сгенерированная форма". Затем пользователь может удалить существующий элемент pic и заменить его новым. Однако, поскольку я делая элемент pic необходимым элементом, он не сможет отправить форму без замены элемента pic, который он удалил с помощью нового элемента pic.

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

Есть ли способ предотвратить это?

Код генерации кода PHP (Extract):

//Input and preview for Display Pic
echo"<div class='BizEditItemDetails' >";
    echo"<label for='BizEditItemFileDP'>Upload Image[DP] &nbsp &nbsp&nbsp&nbsp(Max Size:2MB)</label>";
    echo"<input type='file' class='BizEditItemInput' id='BizEditItemFileDP' name='BizEditItemFileDP' />";
    echo"<input type='button' id=ImageCancelDP name=ImageCancelDP class='ImageCancelButton' value='Cancel'>";
    echo"<span></span>";
    echo"<br>";
    echo"<img id='ImagePreviewDP' name='ImagePreviewDP' class='ImagePreview' src=\"$dp\" > ";
    echo"<input type='hidden' id='ImagePreviewDPValidate' name='ImagePreviewDPValidate' value=\"$dp\" >";
    echo"<input type='hidden' id='DisplayDeleteItemID' name='DisplayDeleteItemID' value=$itemid>";
    echo"<input type='hidden' id='DisplayDeleteItemPicID' name='DisplayDeleteItemPicID' value=$dpid>";
    echo"<input type='hidden' id='DisplayDeleteFilePath' name='DisplayDeleteFilePath' value=$dpfilepath >";
    echo"<input type='button' id='DisplayDelete' name='DisplayDelete' class='ImageDeleteButton' value='Delete Picture'>";
    echo"<br>";
echo"</div>";

Проверка jQuery (извлечения):

ImagePreviewDPValidate:{
            required:true
        },
Теги:
validation
forms

1 ответ

3
Лучший ответ

Вам нужно переосмыслить свой процесс, ваш текущий процесс не может быть исправлен.

Проблема в том, что вы разрешаете первому запросу помещать серверную запись в недопустимое состояние. Вы не можете этого сделать. Нет гарантии, что пользователь сделает второй запрос, и вы не можете заставить проблему с JavaScript. Что делать, если только закрыть окно браузера или уйти от компьютера, или их интернет-соединение умирает?

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

  • 0
    Да, это то, что я подумал .... и это казалось довольно приличной идеей в то время ... Вернуться к чертежной доске я иду тогда.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню