Как отключить отправку поведения asp: ImageButton?
У меня есть кнопка изображения на странице, которая может быть запущена при щелчке мышью, по умолчанию она запускается при нажатии клавиши, также которую я хочу отключить.
Я знаю об атрибуте "UseSubmitBehaviour" в asp: Button, есть ли способ сделать то же самое в asp: ImageButton?
Ответы
Ответ 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>
Ответ 7
См. следующую ссылку. Это можно решить для всех проблем с отправкой по умолчанию.
http://weblog.kevinattard.com/2011/08/aspnet-disable-submit-form-on-enter-key.html
Ответ 8
Пожалуйста, используйте этот код
<script type="text/javascript" language="javascript">
$(document).ready(function {
$("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>