Во-первых, это раздражает пользователя: я бы предложил вместо этого сделать что-то похожее на поле комментариев StackOverflow, которое позволяет вам вводить столько или меньше, как вам нравится, показывает вам сообщение о том, сколько символов вы 'typed и слишком ли много или слишком мало, и отказывается предоставить вам комментарий, длина которого недействительна.
Во-вторых, если вам действительно нужно ограничить длину текста, заменив весь контент из <div>
при каждом нажатии клавиши, если содержимое слишком длинное, излишне дорогостоящее и сделает редактор невосприимчивым к более медленным машинам. Я предлагаю обработать событие keypress
и просто запретить вставку символа с помощью preventDefault()
в событии (или в IE, установив [returnValue
] в true
, если вы используете attachEvent
). Это не помешает пользователю вставлять текст, поэтому вам нужно будет обработать событие paste
(которого нет в Opera или Firefox & lt; 3, так что вам потребуется какое-то решение на основе опроса для тех). Поскольку вы не сможете получить доступ к предварительно вставленному контенту, у вас не будет никакого способа узнать, приведет ли паста к личным ограничениям, поэтому вам нужно будет установить таймер, чтобы снова проверить длину после пасты. Все, что имеет место, первый вариант кажется мне предпочтительным.
Согласно моим результатам, numpy действительно вычисляет правильные результаты:
Traceback from my console:
import numpy as np
xi = np.array([[
[2.51325641-2.34963293j, 2.17949212-1.57079633j, 2.51325641-0.79195972j],
[ 2.15322703+3.14159265j, 0.00000000+1.57079633j, 2.15322703+0.j ],
[ 2.51325641+2.34963293j, 2.17949212+1.57079633j , 2.51325641+0.79195972j]],
[[ 2.44651048-2.3486959j , 2.11452586-1.57079633j , 2.44651048-0.79289676j],
[ 2.08450333+3.14159265j , 0.00000000+1.57079633j , 2.08450333+0.j ],
[ 2.44651048+2.3486959j , 2.11452586+1.57079633j , 2.44651048+0.79289676j]]])
xi
Out[7]:
array([[[2.51325641-2.34963293j, 2.17949212-1.57079633j,
2.51325641-0.79195972j],
[2.15322703+3.14159265j, 0. +1.57079633j,
2.15322703+0.j ],
[2.51325641+2.34963293j, 2.17949212+1.57079633j,
2.51325641+0.79195972j]],
[[2.44651048-2.3486959j , 2.11452586-1.57079633j,
2.44651048-0.79289676j],
[2.08450333+3.14159265j, 0. +1.57079633j,
2.08450333+0.j ],
[2.44651048+2.3486959j , 2.11452586+1.57079633j,
2.44651048+0.79289676j]]])
np.exp(xi)
Out[8]:
array([[[-8.67181417e+00-8.78636873e+00j,
-2.83389303e-08-8.84181454e+00j,
8.67181420e+00-8.78636870e+00j],
[-8.61260674e+00+3.09174756e-08j,
-3.20510345e-09+1.00000000e+00j,
8.61260674e+00+0.00000000e+00j],
[-8.67181417e+00+8.78636873e+00j,
-2.83389303e-08+8.84181454e+00j,
8.67181420e+00+8.78636870e+00j]],
[[-8.10419466e+00-8.22665531e+00j,
-2.65563855e-08-8.28565627e+00j,
8.10419461e+00-8.22665536e+00j],
[-8.04059697e+00+2.88640789e-08j,
-3.20510345e-09+1.00000000e+00j,
8.04059697e+00+0.00000000e+00j],
[-8.10419466e+00+8.22665531e+00j,
-2.65563855e-08+8.28565627e+00j,
8.10419461e+00+8.22665536e+00j]]])
np.exp(2.17949212-1.57079633j)
Out[9]: (-2.833893031963725e-08-8.84181453742246j)
Я использую Python 3.6.5 (Anaconda Python) , с версией NumPy 1.14.3. Пробовали ли вы проверять результаты на другом компьютере / другом экземпляре python?