Изящная передача значений полей в переменную и скрытый ввод с помощью Javascript

#javascript #html #forms

#javascript #HTML #формы

Вопрос:

Я хотел бы проверить информацию, отправленную с помощью document.write , и передать значения формы в скрытые поля формы (если это необходимо) для окончательной отправки. Используя онлайн-скрипт, у меня есть значение поля, содержащееся как таковое

 if (splitArray[i] == 'textname')    
document.formname.textname.value = unescape(splitArray[i 1]);
  

Какой самый простой способ напечатать значение на странице в виде структуры предложения, а также подготовить значения для отправки?

 ...
if (splitArray[i] == 'textname')  
var x = unescape(splitArray[i 1]);
}

function writeIt(y) { document.write(y); }
  

для печати на странице confirm.html:

 Hello <script>writeIt(x);</script>, welcome to Wonderland.
  

для передачи на странице confirm.html:

 <input type="hidden" name="textname" value="<script>writeIt(x);</script>">
...
<input type="submit" value="Submit"></form>
  

Необходима ли передача значений в <input> поля, или я могу полагаться на document.formname.textname.value то, что они содержат значения формы (фактически без необходимости выписывать HTML (форму <input> ), отличную от кнопки отправки?

Ответ №1:

Я хотел бы проверить информацию, представленную с помощью document.write

document.write не «отправляет» информацию, она записывается в текущий документ. Если документ закрыт, он сначала вызывает document.open , который удалит все содержимое.

и передайте значения формы в скрытые поля формы (если это необходимо) для окончательной отправки. Используя онлайн-скрипт, у меня есть значение поля, содержащееся как таковое

 if (splitArray[i] == 'textname')    
document.formname.textname.value = unescape(splitArray[i 1]);
  

В чем
самый простой способ вывода значения
на странице в чем-то вроде предложения
структурируйте, а также подготовьте значения
для отправки?

Чтобы отобразить текст на странице, добавьте его как TextNode существующего или нового элемента:

 var textNode = document.createTextNode('foo bar');
<someElement>.appendChild(textNode);
  

что может быть сделано в одной строке:

 <someElement>.appendChild(document.createTextNode('foo bar'));
  

Или вы можете задать свойство innerHTML элемента:

 <someElement>.innerHTML = 'foo bar';
  

Кажется странным использовать скрытые элементы для значений, а затем отображать их в другом месте. Почему бы просто не использовать элементы управления формой, доступные только для чтения? Затем отображается ваш текст, он так же защищен от пользовательских изменений, как и скрытые элементы, и готов к отправке.

Комментарии:

1. Спасибо за ваш ответ. Я хочу отобразить их в другом контексте, чтобы предложить пользователю «новую» информацию, которая фактически побудила бы их прочитать то, что они ранее выбрали. Если я представлю им простое повторение того, что они только что видели (т. Е. Форму с выбранными полями) Я думаю, что люди будут более склонны нажимать «Отправить», фактически не читая его и не проверяя информацию.

2. На самом деле, вы правы в предложении сделать поля доступными только для чтения. Это делает свое дело. Еще раз спасибо.