ModalPopupExtender setfocus проблема - PullRequest
2 голосов
/ 09 июля 2011

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

Ответы [ 4 ]

1 голос
/ 09 июля 2011

Добавьте JavaScript ниже:

function pageLoad() {
    $find('modalPopupBehaviorID').add_shown(function () {
        $get("<%= TextBox1.ClientID %>").focus();
    });
}
1 голос
/ 09 июля 2011

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

SetTimeout ( 'document.getElementById ( "TextBox") фокус ();.', 1);

0 голосов
/ 12 февраля 2016

Ответ rkw среди прочих помог мне найти запутанное решение.Мне пришлось использовать тайм-аут и вызов другой функции, чтобы правильно поместить фокус в моё модальное текстовое поле.Менее запутанные решения не работали для меня.Я полагаю, что добавление setFocus () позволило создать правильную очередь выполнения до желаемого конца.... надеюсь, это поможет кому-то еще.Как и предполагал rkw, для выполнения задачи требовалась только миллисекунда.

// разметка

                    <asp:Button ID="btnShow" runat="server" Text="Add New Test" OnClick="btnShow_OnClick" OnClientClick="return modalAdjust()"  /> 

// javascript

  function setFocus() {
              try {
                  document.getElementById('<%= TextBox_TestDescription.ClientID %>').focus();
              } catch (e) {
                  alert(e);
              }
          }

          function modalAdjust() {
              try {
                  setTimeout("setFocus();", 1);
              }
              catch (e) {
                  alert(e);
              }
          }
0 голосов
/ 09 июля 2011

При открытии всплывающего окна:

document.getElementById("TextBox").focus();

Надеюсь, это поможет (и надеюсь, что это не слишком очевидно, хе-хе)

...