Обнаружение штрихов клавиш в веб-форме

#javascript #asp.net

#javascript #asp.net

Вопрос:

У меня есть текстовое поле веб-формы с текстовым режимом, установленным на несколько. Недавно функция перестала работать, и я не могу понять, что произошло. Когда пользователь нажимает клавишу [Return] два раза подряд, веб-форма запускает событие кнопки отправки через javascript на стороне клиента. Вот так:

 function postPage() {       
    var inputString = document.getElementById("Search1_AccordionPane2_content_txtSearchText").value;

    if (inputString.match(/(rn){2,}/)) {
        document.getElementById("Search1_AccordionPane2_content_txtSearchText").click();
    }
}
  

Код не изменился, наши пользователи используют IE8 на W7, и я подозреваю, что это перестало работать с момента перехода на W7 или IE8. Кроме того, настройки браузера ограничены групповой политикой, которую я не контролирую. Есть идеи, с чего начать отладку этого?

Спасибо,

Risho

Комментарии:

1. и что такое прослушиватель событий?

Ответ №1:

попробуйте сделать r необязательным следующее ? so: /(r?n){2,}/ , На всякий случай, если IE8 использует single n вместо rn в качестве ограничителя строки

Комментарии:

1. К сожалению, у меня нет доступа ни к IE8, ни к W7, чтобы попробовать другие предложения. может быть, попробуйте что-то вроде alert(inputString.replace('n', '[n]').replace('r','[r]')); , чтобы узнать, что вам следует искать в строке (при условии, что совпадение — это та часть, которая завершается неудачей)

2. Я только что протестировал его в IE8 на WinXP (извините, наверное, я солгал), и совпадение сработало, можете ли вы опубликовать свой код обработчика событий?

3. Элемент управления находится в файле .ascx и выглядит следующим образом: <asp:идентификатор текстового поля =»txtSearchText» onKeyUp=»postPage();» runat=»server» Height=»80px» TextMode=»Многострочный» Width=»240px» />. Функция javascript: функция postPage() { var inputString = document.getElementById(«Search1_AccordionPane2_content_txtSearchText»).значение; if (inputString.match(/(rn){2,}/)) { document.getElementById(«Search1_AccordionPane2_content_txtSearchText»).click(); } }

4. глупый вопрос: asp автоматически обновляет идентификатор текстового поля с txtSearchText до Search1_AccordionPane2_content_txtSearchText ? потому что в противном случае ваш getElementById не будет совпадать

5. Search1_AccordionPane2_content_txtSearchText изначально был получен из отображаемой страницы «просмотр источника».