2012-06-01 2 views
4

Есть ли способ получить значение из элемента div в форме вместо использования ввода?Получить значение из div.

Я знаю, что это своего рода глупый вопрос, но я просто хочу знать, возможно ли это. Что-то вроде PHP DOM?

Или есть способ изменить div на вход при нажатии submit?

Спасибо,

+0

почему нет скрытых fileds – zod

+0

Только с единственной целью обучения. Я хочу посмотреть, возможно ли это, и учиться на нем. – Brian

ответ

5

С Javascript, вы можете поместить содержимое Div в в (скрытый) вход прямо перед отправкой формы.

Это будет примерно выглядеть в JQuery:

$('#myForm').submit(function() { 
    $('#myHiddenInput').val($('#myDiv').html()); 
}); 

Edit: Почему вы, ребята говорят о AJAX? В этой ситуации нет необходимости использовать AJAX!

+0

Внутренний '$ ('# myForm'). Submit();' не требуется. Форма будет отправлена ​​до тех пор, пока функция не вернет false или не вызовет 'e.preventDefault()' .. Поскольку у вас это будет, это будет бесконечно возвращаться. – paislee

+0

Спасибо, что указали, что я обновил свой код. –

0

Используйте jQuery для размещения информации в div. Очень просто сделать, всего несколько строк кода.

2

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

Использование JavaScript (проще всего imho с jQuery) позволяет извлекать информацию из DOM и включать ее в форму представления в виде дополнительных полей.

Существует множество вопросов по SO, которые касаются добавления в форму представления с использованием jQuery, например.

Safari/JQUery - Insert and Update Hidden Field On Page

0

вы можете использовать вызов Ajax внутри файла JavaScript. Все, что вам нужно сделать, это вызвать div id, например, как это $ ("# yourdiv"). Val(); Это даст вам значение того, что находится в div id. Если вы дадите более конкретный пример и покажете часть своего кода, я могу быть более конкретным. Jim

+0

будет .val работать для div или только вход – zod

+0

Вы не можете использовать val() в div, потому что у него нет значения .... –

+0

удалить этот ответ или получить downvote – zod

0

Существует несколько способов архивировать это.

Скрытые поля

Вы можете создать скрытые поля ввода и заполнить их с JavaScript на отправить

Ajax

использовать, например, библиотеки AJAX JQuery, чтобы сериализовать данные и отправить его с помощью AJAX

Введите поля ввода, чтобы они выглядели как div, о которых вы говорите бой

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

Позвольте мне знать, если вам нужен пример любого из эти.

3

Вот решение JavaScript безjQuery:

<script> 

    function prepareSubmit() { 
     var payload = document.getElementById("target").innerHTML; 
     document.getElementById("divContents").value = payload; 
     return true; 
    }​ 

</script> 

Markup:

функция
<form name="test"> 
    <div id="target">Payload</div> 
    <input type="hidden" id="divContents" name="divContents" /> 
    <input type="submit" onclick="return prepareSubmit()" value="submit" /> 
</form>​ 

OnClick работает до представить событие. Фактически, форма не будет отправлена, если prepareSubmit не вернет true. Он вставляет содержимое div в скрытый ввод. Я думаю, что это самое простое решение. Убедитесь, что сценарий загружен перед формой.

+0

Это сработало. Спасибо. – Brian

+0

Не было бы лучше поставить 'prepareSubmit' в атрибут' onsubmit' формы? Таким образом, он обрабатывал бы все типы отправлений, например, вставляя элемент в элемент формы. – RustyTheBoyRobot

Смежные вопросы