введите ключ для вставки новой строки в многострочном текстовом поле asp.net - PullRequest
3 голосов
/ 27 августа 2008

У меня есть некоторый C # / asp.net код, который я унаследовал, который имеет текстовое поле, которое я хочу сделать многострочным. Я сделал это, добавив textmode = "multiline", но когда я пытаюсь вставить новую строку, вместо этого вводится клавиша ввода: P

Я погуглил, и похоже, что по умолчанию нужно вводить (или контролировать-ввод) ввод новой строки. Как я уже сказал, я унаследовал код, поэтому я не уверен, есть ли вокруг javascript или просто простая вещь asp.net, которую я должен сделать.

Ответы [ 8 ]

4 голосов
/ 28 августа 2008

Оказывается, это ошибка в Firefox + ASP.NET, когда сгенерированный javascript для элемента defaultButton не работает в Firefox. Мне пришлось поставить замену для функции WebForm_FireDefatultButton, как описано здесь :

function WebForm_FireDefaultButton(event, target) {
    var element = event.target || event.srcElement;
    if (event.keyCode == 13 &&
    !(element &&
    element.tagName.toLowerCase() == "textarea"))
    {
        var defaultButton;
        if (__nonMSDOMBrowser)
        {
            defaultButton = document.getElementById(target);
        }
        else
        {
            defaultButton = document.all[target];
        }
        if (defaultButton && typeof defaultButton.click != "undefined")
        {
            defaultButton.click();
            event.cancelBubble = true;
            if (event.stopPropagation)
            {
                event.stopPropagation();
            }
            return false;
        }
    }
    return true;
}
1 голос
/ 27 августа 2008

Я не могу найти этот javascript "WebForm_FireDefaultButton", это что-то генерирует asp.net?

Да.

Сгенерировано для поддержки функциональности DefaultButton формы и / или панели, содержащей ваши элементы управления. Это источник для него:

function WebForm_FireDefaultButton(event, target) {
  if (event.keyCode == 13) {
    var src = event.srcElement || event.target;
    if (!src || (src.tagName.toLowerCase() != "textarea")) {
      var defaultButton;
      if (__nonMSDOMBrowser) {
        defaultButton = document.getElementById(target);
      }
      else {
        defaultButton = document.all[target];
      }
      if (defaultButton && typeof (defaultButton.click) != "undefined") {
        defaultButton.click();
        event.cancelBubble = true;
        if (event.stopPropagation) event.stopPropagation();
        return false;
      }
    }
  }
  return true;
}
1 голос
/ 27 августа 2008

Я создал образец страницы с TextBox и кнопкой, и он работал нормально для меня:

<asp:TextBox runat="server" ID="textbox1" TextMode="MultiLine" />
<br />
<br />
<asp:Button runat="server" ID="button1" Text="Button 1" onclick="button1_Click" />

Так что, скорее всего, это зависит от какого-либо другого свойства, которое вы установили, или от какого-либо другого элемента управления в форме.

Редактировать: событие TextChanged запускается только тогда, когда TextBox теряет фокус, поэтому это не может быть проблемой.

0 голосов
/ 13 мая 2015

вы можете использовать \ n для ввода ключа то есть [a-zA-Z 0-9 /. \ n] {20 500}

0 голосов
/ 18 декабря 2008
0 голосов
/ 27 августа 2008

@ Дэйв-Уорд, я только что вырыл кучу javascript. большинство из них были сгенерированы ASP.NET для проверки и AJAX, есть куча, начинающаяся с «WebForm_», которая, я думаю, является стандартной для выполнения кнопки default и т. д. Единственный javascript, который мы помещаем на страницу, предназначен для переключения видимости и выполнения некоторой пользовательской проверки. ...

изменить: я нашел ниже. Я не понимаю этого, хотя: P начало формы, в которой находится текстовая область, и скрипт, найденный позже: (обратите внимание, что что-то в stackoverflow работает с символами подчеркивания)

<form name="Form1" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1">

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
    theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>
0 голосов
/ 27 августа 2008

Вы обрабатываете текстовое событие для текстового поля? Это означало бы, что ASP.Net устанавливает текстовое поле, чтобы вызвать обратную передачу (отправить страницу) для всего, что может привести к потере фокуса текстового поля, включая клавишу ввода.

0 голосов
/ 27 августа 2008

Я подозреваю, что это (как вы говорите) некоторый пользовательский код JavaScript.

Оригинальный элемент управления asp.net работает нормально ... вам придется проверить код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...