Существует ли ограничение на размер данных в поле ввода type = текстовое поле? [Дубликат]

Для тех, кому интересно, вот несколько раз для предлагаемых решений ...

Rounding
Java Formatter: Elapsed Time: 105
Scala Formatter: Elapsed Time: 167
BigDecimal Formatter: Elapsed Time: 27

Truncation
Scala custom Formatter: Elapsed Time: 3 

Усечение является самым быстрым, за которым следует BigDecimal. Имейте в виду, что эти тесты были выполнены с использованием нормального исполнения scala, а не с использованием инструментов бенчмаркинга.

object TestFormatters {

  val r = scala.util.Random

  def textFormatter(x: Double) = new java.text.DecimalFormat("0.##").format(x)

  def scalaFormatter(x: Double) = "$pi%1.2f".format(x)

  def bigDecimalFormatter(x: Double) = BigDecimal(x).setScale(2, BigDecimal.RoundingMode.HALF_UP).toDouble

  def scalaCustom(x: Double) = {
    val roundBy = 2
    val w = math.pow(10, roundBy)
    (x * w).toLong.toDouble / w
  }

  def timed(f: => Unit) = {
    val start = System.currentTimeMillis()
    f
    val end = System.currentTimeMillis()
    println("Elapsed Time: " + (end - start))
  }

  def main(args: Array[String]): Unit = {

    print("Java Formatter: ")
    val iters = 10000
    timed {
      (0 until iters) foreach { _ =>
        textFormatter(r.nextDouble())
      }
    }

    print("Scala Formatter: ")
    timed {
      (0 until iters) foreach { _ =>
        scalaFormatter(r.nextDouble())
      }
    }

    print("BigDecimal Formatter: ")
    timed {
      (0 until iters) foreach { _ =>
        bigDecimalFormatter(r.nextDouble())
      }
    }

    print("Scala custom Formatter (truncation): ")
    timed {
      (0 until iters) foreach { _ =>
        scalaCustom(r.nextDouble())
      }
    }
  }

}
14
задан helle 24 June 2010 в 09:01
поделиться

6 ответов

Firefox 3.6.6 на моем 32-битном компьютере Win 7 становится медленным после 1 000 000 символов и полностью зависает после 4 000 000.

Хром падает где-то после 8 000 000.

IE8 падает где-то после 8 000 000 .

Safari падает где-то после 2 000 000.

В моем тестировании Chrome / IE8 / Safari не замедляются, так как размер увеличивается, как делает Firefox.

27
ответ дан Samuel Neff 18 August 2018 в 21:32
поделиться

Я думаю, что это зависит от метода, с которым вы отправляете форму. Если вы отправляете форму через GET-метод, это всего лишь 255 символов для всего запроса (исправьте меня, если я ошибаюсь). POST-метод позволяет гораздо больше ...

Итак, в конце вы можете написать миллионы символов в текстовом поле, вопрос в том, будут ли все символы отправляться на сервер.

В HTML, однако, у вас есть возможность указать, сколько символов вы хотите разрешить. Посмотрите на этот фрагмент:

<input type="text" name="email" maxlength="255" />

Атрибут maxlength тега запрещает пользователю вводить более 255 символов.

0
ответ дан Alex Sawallich 18 August 2018 в 21:32
поделиться

В текстовой области вы можете ввести неограниченное количество текста.

OK, на практике вам не следует вводить мегабайты текста или вы будете сталкиваться с ограничениями сервера.

Когда вы используете метод POST для отправки формы на сервер (что является обычным способом), тогда вы можете отправлять не менее мегабайт. Когда вы используете метод GET, вся форма переносится через строку запроса, и ограничения в тысячах символов (точное значение зависит от сервера и браузера).

0
ответ дан Hans Kesting 18 August 2018 в 21:32
поделиться

Количество видимых символов зависит от размера элемента input, но также от стиля этого элемента: широкий ящик, помещенный в мелкий контейнер (например, div или form), будет не показывать все символы в поле.

См. объяснение W3Schools на INPUT , обращая внимание на атрибуты size и maxlength. maxlength указывает максимальную длину (в символах) поля ввода для типов «текст» или «пароль», size указывает ширину поля ввода.

0
ответ дан Jochem Schulenklopper 18 August 2018 в 21:32
поделиться

Я бы не подумал, что есть предел, если у кода нет чего-то, останавливающего его (параметр размера), или сервер не может принимать больше символов (либо много символов, либо плохой сервер).

Есть также 32-разрядные и т. д. ограничения, в зависимости от сервера, я считаю.

0
ответ дан Sam 18 August 2018 в 21:32
поделиться
  • 1
    Я думаю, что параметр размера не совсем прав? Чтобы ограничить максимальные символы поля, вы должны использовать атрибут maxlength. Размер предназначен только для визуальной ширины поля. – Alex Sawallich 24 June 2010 в 08:51
  • 2
    ах извинения, да, вы правы. – Sam 24 June 2010 в 09:02

Когда атрибут type имеет значение «текст» или «пароль», этот атрибут определяет максимальное количество символов, которое пользователь может ввести. Это число может превышать указанный размер, и в этом случае пользовательский агент должен предложить механизм прокрутки. Значение по умолчанию для этого атрибута - неограниченное число.

Источник: http://www.w3.org/TR/html401/interact/forms.html#adef-maxlength

6
ответ дан Sarfraz 18 August 2018 в 21:32
поделиться
  • 1
    но никто не знает / не проверял, как ограничение в общих браузерах, не так ли? – helle 24 June 2010 в 16:29
  • 2
    Это ограничение, вероятно, меняется в разных браузерах, реализациях JS, реализации сервера и, возможно, даже физических ограничений оборудования. Это пример учебника неопределенного поведения . – Justin L. 30 June 2010 в 09:53
  • 3
    @Justin L: Да, это правда тоже. – Sarfraz 30 June 2010 в 09:56
Другие вопросы по тегам:

Похожие вопросы: