Вопрос

У меня есть веб-страница на C # ASP.NET с формой загрузки XML-файла.Когда пользователь нажимает "загрузить", появляется предупреждение о подтверждении javascript с вопросом: "Этот файл правильный?".Предупреждение о подтверждении активируется только в том случае, если имя файла не содержит значения из одного из других полей формы.

Каков наилучший способ объединить использование формы C # ASP.NET и предупреждения о подтверждении javascript, которое активируется, если имя загружаемого файла не соответствует определенным критериям?

Это было полезно?

Решение

Я полагаю, вы помещаете значение допустимой строки в скрытое поле (вы не упомянули). Осуществлять OnClientClick Для загрузки:

<asp:button .... OnClientClick="return confirmFileName();"/>

<script type="text/javascript">
function confirmFileName()
{
    var f = $("#<%= file1.ClientID %>").val();
    var s=$("#<%= hidden1.ClientID %>").attr("value");
    if (f.indexOf(s) == -1) {
        if (!confirm("Is this correct file?")) {
            $("#<%=file1.ClientID %>").focus();
            return false;
        }
     }
    return true;
}
</script>

РЕДАКТИРОВАТЬ:- В отношении <%= file1.ClientID %>.

Это будет заменено идентификатором клиента элемента управления загрузкой файла, как ctl00$ctl00$cphContentPanel$file1. Анкет Он помещает скрипт на стероиды с точки зрения использования чего -то вроде $("input[id$='file1']"). Анкет Для получения дополнительной информации см. Пост Дэйва Уордса.

Другие советы

Для этой страницы вам не так много нужно сделать с C #, похоже, что большая часть этого будет выполнена на стороне клиента.

Добавьте элемент управления fileupload и кнопку в вашу форму .aspx.Установите для свойства OnClientClick Кнопки что-то вроде

OnClientClick = "return myFunction()"

а затем напишите функцию javascript, например:

function myFunction()
{
   // Check other text values here

   if (needToConfirm){
      return confirm('Are you sure you want to upload?');
   }
   else return true;
}

Убедитесь, что "myFunction()" возвращает false, если вы хотите отменить обратную отправку (т.е.пользователь нажал "нет" в диалоговом окне подтверждения).Это отменит обратную отправку, если они нажмут "Нет".

window.onload = function() {
  document.forms[0].onsubmit = function() {
    var el = document.getElementById("FileUpload1");
    var fileName = el.value;

    if(fileName.indexOf("WHATEVER_VALUE") == -1) {
      if(!confirm("Is the file correct?")) {
        el.focus();
        return false;
      }
    }

    return true;
  }
}

У меня были проблемы с внедрением таких вещей для работы как в IE, так и в Firefox из -за того, как события работают в этих браузерах. Когда я заставил его работать в одном из них, другой все равно вызвал бы отправку, даже если я отменил.

Вот что у нас есть в нашем коде (тест браузера был украден из других мест).

if (!window.confirm("Are you sure?"))
{
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        window.event.returnValue = false;
    else
        e.preventDefault();
}

В дополнение к использованию проверки на стороне клиента, вы также должны добавить CustomValidator для обеспечения проверки на стороне сервера. Вы не можете поверить, что пользователь включен JavaScript или что пользователь не обошел ваши чеки JavaScript.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top