Как выполнить поиск по значению текстового поля и заполнить элементы формы без перезагрузки страницы?

У меня есть очень простая форма, в которой есть текстовое поле с именем CustomerNumber. В форме есть и другие элементы, такие как выборки и списки, которые должны содержать значения, связанные с CustomerNumber.

Все, что я хочу сделать, это:

  1. Пользователь вводит значение в текстовое поле CustomerNumber, а затем «передвигается» или просто щелкает где-нибудь еще на странице.
  2. значение, введенное в CustomerNumber, затем должно быть передано как запрос к базе данных, который вернет результаты, основанные на значении CustomerNumber (например, предыдущие заказы клиента)
  3. Результаты запроса к базе данных используются для заполнения других элементов формы.
  4. Наконец, как только пользователь правильно заполнил форму, он отправит всю форму (включая номер клиента) на сервер для обработки.

Я только что немного взглянул на JQuery и попробовал некоторые простые манипуляции с DOM (например, paragraph.text("new value")), и первое, что я заметил, это то, что ни один из HTML в исходном коде не изменяется. В браузере я вижу изменение, но не в HTML.

Это заставляет меня задаться вопросом, что если я использую JQuery для управления элементами формы (через вызов AJAX или что-то еще - я еще не знаю Jquery), как данные базы данных, возвращаемые из вызова AJAX, будут заполнять элементы формы и как это будет на самом деле отправить на сервер, когда они не существуют в HTML?

Я попытался сделать это, используя только HTML-формы, и у меня есть кнопка отправки рядом с текстовым полем CustomerNumber, и я делаю страницу самостоятельной отправки, но это означало бы наличие формы внутри формы, что невозможно...


person volume one    schedule 16.11.2013    source источник
comment
Проще всего это сделать с помощью атрибута привязки cfinput.   -  person Dan Bracuk    schedule 16.11.2013
comment
@DanBracuk спасибо за совет. Я думал сделать именно это, но подумал, что CF просто генерирует javascript от моего имени, что означает, что я теряю контроль...??   -  person volume one    schedule 16.11.2013
comment
как они будут фактически отправлены на сервер, если они не существуют в HTML Пока элементы формы существуют (и действительны), любые значения, которые они содержат во время отправки, будут быть отправлены на сервер. Независимо от того, было ли значение введено вручную пользователем или программно с помощью Jquery. Re: CF просто генерирует javascript от моего имени Верно. Он имеет несколько особенностей, а также использует более старые версии большинства библиотек js, таких как ExtJS. Лично я бы рекомендовал вместо этого использовать jquery или напрямую использовать ExtJS.   -  person Leigh    schedule 16.11.2013
comment
@Leigh, то есть вы говорите, что если форма «визуально» отображает нужные мне данные, но в источнике просмотра страницы их нет в HTML, данные все равно будут отправлены на сервер? Это то, что я не мог понять. Когда я манипулировал элементом ‹p›, он изменился на странице, но в исходном коде HTML остался старый текст.   -  person volume one    schedule 17.11.2013
comment
Возможно, вы думаете о вещах, которые просто не имеют значения. Во-первых, отсутствие контроля над js, которые ColdFusion генерирует с помощью cfform. Этот код работает. Во-вторых, это то, что появляется при просмотре исходного HTML-кода. Важно то, что все поля формы публикуются при отправке формы.   -  person Dan Bracuk    schedule 17.11.2013
comment
Не используйте cfinput, это только вызовет головную боль в будущем. (И позор вам, @DanBracuk, за то, что вы так много предложили - -10 баллов от Гринфиндора). Если вы используете jQuery, вы можете справиться с этим так же просто (или проще, чем cfinput и связывание. Методы jQuery, на которые вы хотите обратить внимание, это on() (для запуска процесса при изменении поля формы) и ajax() (для фактического извлечения данные — используя обратный вызов, вы можете обрабатывать данные, когда они возвращаются). Вы хотели бы вернуть данные в виде JSON, чтобы их было проще использовать.   -  person Scott Stroz    schedule 17.11.2013
comment
@volumeone — да, если элементы управления имеют name и (соблюдать правила успешного контроля). Вы просматриваете исходный код HTML при первой загрузке страницы. Это не означает, что его нельзя изменить или вы не можете добавлять поля формы. Это ничем не отличается от того, если пользователь вводит новый value в поле формы - новый value не является частью исходного исходного кода HTML, но все равно будет отправлен. Вы можете проверить это самостоятельно с помощью простого <form method="post">. Измените value программно, отправьте его и создайте дамп области FORM.   -  person Leigh    schedule 17.11.2013