Как я могу отключить DefaultButton asp: Panel на ClientSide? - PullRequest
1 голос
/ 03 августа 2011

У меня есть asp: Панель , чья кнопка по умолчанию установлена ​​на Сохранить кнопку формы.Но я хочу, чтобы, когда фокус был на одном конкретном элементе привязки в моей форме, клавиша Enter не должна запускать DefaultButton Panel.Скорее он должен запускать функцию javascript , написанную внутри href якоря, которая отлично работает, если я просто удаляю asp: Panel из формы.

Я перепробовал много решений, но ни одно из них, похоже, не работает.Вот некоторые из них: -

1.

Я фиксирую событие привязки focus , в котором я перехватываю другой обработчик для нажатия клавиши событие и используйте event.preventDefault () , чтобы событие там отменялось, и удалите это событие нажатие клавиши в blur элемента привязки.Но это не останавливает выполнение DefaultButton из Panel .

2.

Использование другого asp: Panel внутри внешней Panel и установите для DefaultButton значение ImageButton , которое заменяет элемент привязки (потому что мы можемне установлено DefatulButton в привязка ).- Но при этом все равно срабатывает DefaultButton внешней Panel .

Мне нужен какой-то способ отключить DefaultButton извнешняя asp: панель на стороне клиента.Это возможно?

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Не совсем уверен, что вы делаете, но когда вы добавляете атрибут DefaultButton к asp:Panel, он добавляет что-то вроде этого к визуализированному div:

onkeypress="javascript:return WebForm_FireDefaultButton(event, 'Button1')"

Вы можете удалить этот атрибут с помощью jQuery, выполнив что-то вроде:

$("#Panel1").removeAttr("onkeypress");

(при условии, что ClientID вашей панели равен Panel1). Надеюсь, что это поможет!

0 голосов
/ 03 августа 2011

Похоже, что вы используете типичное ограничение при использовании элементов управления asp.net для создания Javascript.

Я бы написал вашу собственную функцию для обработки этой формы, а затем поместил в нее необходимую логику.

...