Войдите кнопка не отправляет форму (ТОЛЬКО IE) ASP.NET

Я нашел решение, которое, кажется, работает. Я проверил его в симуляторе политики, и он также работает правильно в реальной среде. Следующая политика работает:

{
    "Version": "2012-10-17",
    "Id": "Policy-S3-Bucket-myBucket",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:username": ["user1", "user2"]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::myBucket"],
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-01c9d66c12345"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::myBucket"],
            "Condition": {
                "StringEquals": {
                    "aws:username": ["user1", "user2"]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": ["arn:aws:s3:::myBucket/*"],
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-01c9d66c12345"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": ["arn:aws:s3:::myBucket/*"],
            "Condition": {
                "StringEquals": {
                    "aws:username": ["user1", "user2"]
                }
            }
        }
    ]
}

Политика требует, чтобы либо строка sourceVpc ИЛИ имя пользователя было таким, как указано в условии.

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

10
задан Anders 10 November 2008 в 13:45
поделиться

6 ответов

Другая вещь, которую я сделал в прошлом, является переносом область формы в Панели и установила атрибут DefaultButton на кнопку отправки, которую Вы имеете. Это эффективно отображает клавишу Enter на представление, пока у Вас есть элемент формы в фокусе в области панели.

13
ответ дан 3 December 2019 в 13:41
поделиться

Просто создайте ввод текста в скрытом отделении на странице. Это обойдет ошибку IE.

Отделение в качестве примера:

    <!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") -->
    <div style="display:none">
            <input type="text" name="hiddenText"/>
    </div>
25
ответ дан 3 December 2019 в 13:41
поделиться
// Use the following Javascript in your HTML view
// put it somewhere between <head> and </head>

    <script language="JavaScript" type="text/javascript"><!--
    function KeyDownHandler(btn)
    {
      if (event.keyCode == 13)
      {
        event.returnValue=false;
        event.cancel = true;
        btn.click();
      }
    }
    // -->
    </script>

    // Put this in your TextBox(es) aka inside <asp:textbox ... >
    onkeydown="KeyDownHandler(ButtonID)"
2
ответ дан 3 December 2019 в 13:41
поделиться

Это использует ПОЛУЧЕНИЕ вместо POST? URL слишком долго? Я видел это...

-1
ответ дан 3 December 2019 в 13:41
поделиться

В основном форме нужна или кнопка, входной тип = "отправляют" или входной тип = "изображение", чтобы включить встроенному поведению утверждать, что форма на входит. Вам не должен быть нужен JavaScript для представления его.

-1
ответ дан 3 December 2019 в 13:41
поделиться

При использовании display: none IE не увидит кнопку и, следовательно, не сможет использовать ее для отправки формы. Вместо этого вы можете использовать z-index и абсолютное позиционирование, чтобы скрыть его под другим элементом, например, со стилем:

position: absolute; внизу: -20 пикселей; слева: -20 пикселей; z-index: -1;

Теперь он по-прежнему будет там, доступен IE, но скрыт под другим элементом.

1
ответ дан 3 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: