2012-07-03 3 views
2

У меня есть веб-приложение, которое имеет большую и сложную форму (поля, чеки и т. Д.). Я использовал стандартные элементы управления ОС, поскольку они имеют визуальные (стилистические) ограничения.Эффективный способ хранения данных формы?

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

В настоящее время я делаю,

IF ($('#foo').hasClass('on')){bar=1} 

...

Затем я вручную составить строку POST на стороне PHP через

foo=bar&bla=blabla ... 

Тогда многое другое для создания оператора вставки SQL , Кажется, что это неэффективно, если у вас есть десятки полей ... Но я ненавижу стандартные элементы FORM ...

Любые предложения? .... Петли? Массивы?

+1

можно сериализовать данные формы перед отправкой. – Saurabh

+0

Каковы визуальные (стилистические) ограничения, на которые вы ссылаетесь? Вы можете изменить внешний вид элементов формы [css] (http://www.sitepoint.com/style-web-forms-css/). –

+0

в чем причина ненависти стандартных элементов 'form'? – ianace

ответ

0

Вы можете использовать serialize() метод JQuery в:

$('form .on').serialize(); 

jsFiddle example

+0

Это прекрасно, спасибо! Я также работаю с динамическими таблицами, если у вас есть имя = foo [] ... СПАСИБО! –

0

Исходя из того, что я понимаю, вы не хотите вручную получать значение каждого элемента с классом «включено». Вы можете использовать каждую функцию jQuery, используя все необходимые элементы. Что-то вроде:

​var query = ""; 

$(".on")​​.each(function(i){ 
    if(i === 0) { 
     query+="?"+$(this).attr('id')+"="+$(this).text();    
    } else { 
     query+="&"+$(this).attr('id')+"="+$(this).text();    
    } 
}); 

(см: http://jsfiddle.net/MkbrV/)

Это то, что вы ищете?

+0

Похоже, мне просто нужно быть умным в том, чтобы называть мои идентификаторы, связанные с полями базы данных, поэтому мне также будет легче на стороне PHP. Благодаря! –

+0

Да, я предполагал, что они как-то связаны с дБ. – Felix

1

Вам следует использовать форму. Но как это сделать?

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

Поиск pretty forms jquery в Google.

+0

Довольно, да, но и добавленная функциональность. Извините, если это не ясно. Просто не пытайтесь вручную установить каждый элемент в переменную. –

+0

Вы должны использовать форму. Допустим, вам нужен выбор диапазона со слайдером. Значения должны быть сохранены в текстовые поля ввода.Когда вы активируете javascript, вы скрываете поля ввода и показываете какую-то интерактивную графику как слайдер. Когда вы перемещаете ползунок, javascript автоматически изменит значение соответствующего поля ввода. Это делает слайдер формой инкапсулированной «вещи», и вам не нужно беспокоиться об этом на стороне сервера. Если у вас нет JavaScript, отображаются только два текстовых поля, которые изящно деградируют. – HerrSerker

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