Не удается передать управляющее значение ASP-сервера в функцию JavaScript - PullRequest
1 голос
/ 03 ноября 2011

Я использую ASP.NET 2.0.

У меня есть различные серверные элементы управления ASP.NET, такие как текстовые поля в моей форме ввода.Я хочу передать значение TextBox на событие onBlur .Пример кода TextBox приведен ниже:

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" onBlur="isNumber(this.Value);"></asp:TextBox>

В коде, который я добавил ниже строки:

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this.Value)");

JavaScript ниже:

<script type="text/javascript" language="javascript">
function isNumber(n) {
  alert(n);
  return !isNaN(parseFloat(n)) && isFinite(n);
}
</script>

Я добавил alert(n), чтобы проверить, передано ли значение или нет.Значение не передается из события onBlur.В предупреждающем сообщении отображается сообщение «undefined».

Как избавиться от этой проблемы?

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

Удалить onBlur:

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" ></asp:TextBox>

Префикс javascript не требуется:

txtTotalTw.Attributes.Add("onBlur", "isNumber(this.value);");
1 голос
/ 03 ноября 2011

Как сказал Сенад, уберите лишний вызов в разметке и измените,

this.Value to this.value.

JavaScript чувствителен к регистру и значение не определено, но значение равно.


Для возврата фокуса к элементу управления Измените код на

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this)")

и измените функцию на что-то вроде этого

function isNumber(ctrl) {
  var t = ctrl.value;
  var n = parseFloat(t);       
  if (isNaN(n) || !isFinite(n)) {
    ctrl.focus();
  }
1 голос
/ 03 ноября 2011

удалить onBlur из вашего файла шаблона aspx.Просто оставьте тот, который вы добавили из кода.и это будет работать.

...