Вместо disabled
вы можете использовать readonly
. С помощью некоторого дополнительного CSS вы можете стилизовать ввод так, чтобы он выглядел как поле disabled
.
На самом деле есть еще одна проблема. Событие change
запускается только тогда, когда элемент теряет фокус, что не является логическим с учетом поля disabled
. Возможно, вы вставляете данные в это поле из другого вызова. Для выполнения этой работы вы можете использовать событие «bind».
$('form').bind('change', 'input', function () {
console.log('Do your thing.');
});
протестированный это на присвоения на 10 м номера 10
One:
real 0m5.610s
user 0m5.098s
sys 0m0.220s
Two:
real 0m6.216s
user 0m5.700s
sys 0m0.213s
Three:
real 0m12.986s
user 0m11.767s
sys 0m0.489s
Каждый, кажется, побеждает
Редактирование: JVM является стандартным '/usr/bin/java' в соответствии с Mac OS X 10.5
java version "1.5.0_16" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284) Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)[еще 118] редактирование:
Код, как требуется
public class One {
public static void main(String[] args) {
int someValue = 10;
for (int i = 0; i < 10000000; i++) {
String stringValue = Integer.toString(someValue);
}
}
}
случай 2 и 3 так же
выполненное использование
javac *.java; time java One; time java Two; time java Three
Первые два примера на самом деле идентичны, так как String.valueOf (интервал) использует Integer.toString (интервал) метод. Третье ужасно, и вероятно менее эффективно, так как конкатенация является медленной в Java.
(Противоположность David Hanak.)
Даже при том, что согласно измерениям cobbal, № 1, кажется, является самым быстрым, я настоятельно рекомендовал бы использование Integer.toString (). Моя причина этого состоит в том, что этот вызов явно содержит тип аргумента, поэтому если позже Вы решаете изменить его от интервала для удвоения, ясно, что этот вызов изменился. Вы сделали бы то же, если бы это был двоичный формат, не так ли? Выигрыш в быстродействии на № 1 по сравнению с № 2 только минимален, и как все мы знаем, "преждевременная оптимизация является корнем всего зла".
"" + int
медленнее как показано выше David Hanak.
String.valueOf()
вызовы внутреннего изгиба Integer.toString()
. Следовательно, использование Integer.toString()
лучше.
Так, Integer.toString()
является самым быстрым..
Посмотрите на исходный код JRE, и Вы будете, вероятно, видеть различие. Или ни один. На самом деле Strinv.valueOf (международное нечто) реализован следующим образом:
public static String valueOf(int i) {
return Integer.toString(i, 10);
}
и Integer.toString (международное нечто, международное основание)
public static String toString(int i, int radix) {
...
if (radix == 10) {
return toString(i);
}
...
}
, Что означает при использовании основания 10 лучше вызов Integer.toString (международное нечто) непосредственно. Поскольку другие случаи используют Integer.toString (международное нечто, международное основание).
concat решение сначала преобразовывает международное значение в Строку и позже конкатенирует с пустой строкой. Это, очевидно - самый дорогой случай.
Даже при том, что согласно измерения cobbal, № 1, кажется, является самым быстрым, я настоятельно рекомендовал бы использование String.valueOf()
. Моя причина этого состоит в том, что этот вызов явно не содержит тип аргумента, поэтому если позже Вы решаете изменить его от интервала для удвоения, нет никакой потребности изменить этот вызов. Выигрыш в быстродействии на № 1 по сравнению с № 2 только минимален, и как все мы знаем, "преждевременная оптимизация является корнем всего зла".
третье решение вне рассмотрения, так как оно неявно создает StringBuilder
и добавляет компоненты (в этом случае, число и пустая строка) к этому, и наконец преобразовывает это в строку.