Отправка избранных меню - PullRequest
       28

Отправка избранных меню

0 голосов
/ 27 декабря 2011

Я использую код в jQuery Mobile для динамического создания меню выбора, но у меня возникают проблемы при передаче данных в базу данных.Меню создаются с использованием метода append для каждого элемента формы.Вот краткий пример кода:

for (var i = 0; i < arr.length; i++) {
var r = arr[i];
console.log(r);
    name    = r.optionname;
    val     = r.optionvalue;
    nameid  = r.optionnameid;
    valueid = r.optionvalueid;
if ($("#prodAttributes_"+prodID+" select").is("[name*=" + name + "]")) {

var select = $("#prodAttributes_"+prodID).find("select[name*=" + name + "]");
var option = $("<option></option>");
    option.val(val);
    option.text(val);
    option.attr("id", valueid);
    select.append(option);
  } else {

var select = $("<select></select>");
    select.attr("name", name);
    select.attr("id", nameid);
var option = $("<option></option>");
    option.val(val);
    option.text(val);
    option.attr("id", valueid);
    select.append(option);
var label = $("<label></label>");
    label.attr("class", "select");
    label.attr("for", name);


    label.text(name);
    fieldset.append(select);
    myform.append(div);
    $(myform).appendTo("#prodAttributes_"+prodID);

    }

    }

Я знаю, что это не самый хороший код.

Проблема, которую я имею, я не знаю, как получитьпредставленные данные.Я так растерялся, если мне нужно использовать тег формы.

Это действительно нужно?Должен ли я использовать тег или тег ?

Должен ли я использовать функцию при нажатии на кнопку отправки или использовать что-то избиблиотеки jQuery?

Сгенерированный HTML здесь:

<div id="prodAttributes_2">
<form id="attributesubmit">
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<div role="heading" >Options:</div>

<select name="Memory" id="4">
<option value="16 mb" id="3">16 mb</option>
<option value="32 mb" id="4">32 mb</option>
</select>


<select name="Model" id="3">
<option value="Premium" id="6">Premium</option>
<option value="Deluxe" id="7">Deluxe</option>
</select>

</fieldset>
</div>
<input type="button" id="submitme" value="send" />
</form>
</div>

Я также сделал JSFiddle, чтобы показать вам, как это на самом деле выглядит .

Я пришел к выводу, что я должен запустить функцию.Однако я сомневаюсь, что serialize() делает то, что я хочу, поэтому что-то вроде:

$("#submitme").live('click', function(){
$('select').each(function() {
var selectedOption = $(this).find('option:selected');

alert('Value: ' + selectedOption.val() + ' Text: ' + selectedOption.text());
});

var formData = '<p>something generated</p>';
var newPage = $('<div data-role="page" data-url="test"><div data-role="header"><h1>test</h1></div><div data-role="content">'+formData+'</div></div');
    newPage.appendTo( $.mobile.pageContainer );
    //append it to the page container
    $.mobile.changePage(newPage);

        });

Но тогда мне все равно требуется имя / идентификатор самого выбранного элемента.Как будет выглядеть код, когда он будет готов для вставки в базу данных SQL?

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Это полностью связано с действием, которого вы хотите достичь.Если вы используете кнопку submit при нажатии, она будет искать все элементы в форме и отправлять ее по URL-адресу атрибута action form в формате get или * 1005.* и это автоматически, поэтому, если вам нужно отправить много элементов, вы должны рассмотреть вопрос об использовании submit.Теперь запомните, что это не AJAX, чтобы вы не могли знать, что происходит на сервере.Если есть несколько элементов, вы можете поймать событие нажатия кнопки и обернуть селекторами элементы, а затем отправить его по ajax.

Примечание

Вы можете связать событие submit типа кнопки submit и затем отправить вызванный ajax для управления ответом сервера

ОБНОВЛЕНИЕ

Я не совсем уверен, чего вы хотите достичь, но вот как вы можете получить и обработать все поля в форме, связывая кнопку отправки, чтобы избежать выборадля каждого html-элемента в форме

Предполагая, что кнопка, которую он вводит, отправляет

$('form#attributesubmit').live('submit', function (){

     $(this).serialize() -->> this give you all the fields and values of the form
});
0 голосов
/ 27 декабря 2011

Почему-то вам необходимо отправить данные обратно на сервер.Вы можете сделать это, используя AJAX (используя дополнительные методы jQuery) - что позволит вам остаться на той же странице после нажатия «Отправить», или вы можете сделать это как традиционную HTML-форму - для которой потребуется тег <form>с action, установленным на URL, который вы хотите отправить.

...