Подтвердить что ты не робот

Как отключить отправку поведения asp: ImageButton?

У меня есть кнопка изображения на странице, которая может быть запущена при щелчке мышью, по умолчанию она запускается при нажатии клавиши, также которую я хочу отключить.

Я знаю об атрибуте "UseSubmitBehaviour" в asp: Button, есть ли способ сделать то же самое в asp: ImageButton?

4b9b3361

Ответ 1

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

function disableEnterKey(e)
{
     var key;
     if (window.event) key = window.event.keyCode; // Internet Explorer
     else key = e.which;

     return (key != 13);
}

// In your aspx file Page_Load do the following foreach control you want to disable
// the enter key for:
txtYourTextBox.Attributes.Add("OnKeyPress", "return disableEnterKey(event);");

Если вам нужно полностью отключить форму ввода Enter. используйте обработчик OnKeyDown на теге <body> на своей странице.

Код javascript:

if (window.event.keyCode == 13) 
{
    event.returnValue = false; 
    event.cancel = true;
} 

С JQuery это будет намного чище, проще и рекомендуется. Вы можете сделать расширение с помощью:

jQuery.fn.DisableEnterKey =
    function()
    {
        return this.each(function()
        {
            $(this).keydown(function(e)
            {
                var key = e.charCode || e.keyCode || 0;
                // return false for the enter key
                return (key != 13);
            })
        })
    };

// You can then wire it up by just adding this code for each control:
<script type="text/javascript" language="javascript">
    $('#txtYourTextBox').DisableEnterKey();
</script>

Ответ 2

Если вы разместите свой контент в asp: Panel, вы можете использовать свойство DefaultButton, чтобы установить другую кнопку по умолчанию, чтобы кнопка изображения не была нажата.

<asp:Panel runat="server" ID="pnl_Test" DefaultButton="btn_Test2">
    <asp:ImageButton runat="server" ID="btn_Test1" />
    <asp:Button runat="server" ID="btn_Test2" />
</asp:Panel>

В этом примере нажмите btn_Test2, когда вы нажмете Enter, где обычно btn_Test1 будет нажата

Ответ 3

Использовать ответ Келси (этот ответ wiki'ed)

... но обратите внимание на несколько вещей, когда вы его реализуете.

  • Я бы рекомендовал простой старый javascript-метод, если вы еще не используете jQuery. если вы сделаете этот метод, просто верните (keynum!= 13) не делайте что-то глупо, как if (true) return true; else return false;

  • Вам не нужно назначать onkeydown из кода позади. Это можно сделать в разметке, и это будет намного чище, когда вы это сделаете.

  • Не отключайте ключ ввода во всей форме. Вы можете сделать это только на своих входах, но если вы сделаете это во всей форме, вы не сможете добавить возврат каретки в текстовое поле.

  • Если вы используете jQuery, я бы рекомендовал добавить класс CSS под названием "disableEnterKey" и присвоить его элементам формы, которые вы хотите отключить, а затем вызвать метод Kelsey jQuery в $( ". disableEnterKey" ) в документ готов.

  • Не отвечайте слишком похожим на кого-либо на SO, даже если вы не полностью согласны с ответом. И даже если ответ был прост, и тысячи людей, возможно, сделали это. Это "копирование". Который похож на "резак" или "рассказ о шотландцах"... что плохо.

(этот ответ был общедоступным wiki'ed, поскольку этот вопрос стал глупым)

Ответ 4

Форма будет выполнять первую кнопку, которую он найдет на странице, когда вы нажмете enter. Если вы можете переместить ImageButton дальше по странице, чтобы она больше не являлась первой кнопкой в ​​разметке и использовала CSS для правильной позиции, это должно устранить вашу проблему. На прошлой неделе я исправил то же самое, и это сработало для меня. Я пошел с этим решением, потому что он не требовал корректной работы JavaScript.

Ответ 5

Вместо этого используйте asp: image. Затем поместите код javascript в onclick "javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();"

Задайте значение скрытого поля (используя javascript), чтобы указать код на стороне сервера, на который было нажато изображение.

document.getElementById('imageClicked').setAttribute('value', 'true');

Затем, в конце обработки обратной передачи на сервере reset значение hiddenField:

document.getElementById('imageClicked').setAttribute('value', 'true');

Ответ 6

вы хотите что-то вроде

<form ...>

  <!-- some code here -->

  <button style='display:none' onclick='return false'>here comes the magic</button>

  <button>normal button </button>

</form>

Ответ 8

Пожалуйста, используйте этот код

<script type="text/javascript" language="javascript">
$(document).ready(function {
    $("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>