2012-07-03 63 views
2

我有一個網絡應用程序,有一個大而複雜的形式(領域,檢查等)。 我使用標準的OS窗體控件,因爲它們具有視覺(樣式)限制。存儲表單數據的有效方法?

我一直在基本上創建帶有ID和附加類或自定義數據屬性的跨度。我以後需要將它發送到PHP腳本以插入到數據庫中。這在過去運行良好,但我不得不做很多手動處理字段,我認爲這不是高效的...有更好的方法嗎?

我現在做的,

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

...

然後,我通過手動

foo=bar&bla=blabla ... 

然後其它更多撰寫關於PHP側的POST字符串創建插入SQL語句。 似乎它效率低下,如果你有幾十個領域......但我討厭標準的FORM元素...

有什麼建議嗎? ....循環?陣列?

+1

你可以在發送之前序列化表單數據。 – Saurabh

+0

你指的是什麼視覺(造型)限制?你可以改變表單元素的外觀[使用CSS](http://www.sitepoint.com/style-web-forms-css/)。 –

+0

你恨標準'form'元素的原因是什麼? – ianace

回答

0

你可以使用jQuery的serialize()方法:

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

jsFiddle example

+0

這是完美的,謝謝!如果你有name = foo [] ...我也可以使用動態表格!謝謝! –

0

從我的理解是,你不想手動獲取每個元素的值'on'。您可以使用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

看起來我只需要將我的ID命名爲與數據庫字段相關的名稱,這樣我就可以在PHP端更輕鬆一些。謝謝! –

+0

是的,我假設他們以某種方式涉及數據庫。 – Felix

1

您應該使用表單。但如何讓它變得漂亮?

使用JavaScript,您可以擁有一種形式的前端。隱藏表單元素並使用一些JS來更改交互時的表單字段值。

在Google中搜索pretty forms jquery

+0

漂亮,是的,但也增加了功能。對不起,如果不明確。只是想避免手動將每個元素設置爲一個變量。 –

+0

你應該使用一個表單。可以說你想要一個帶滑塊的範圍選擇器。這些值應該存儲在文本輸入字段中。如果您的JavaScript處於活動狀態,則會隱藏輸入字段並將一些交互式圖形顯示爲滑塊。當您移動滑塊時,javascript將自動更改關於輸入字段的值。這使滑塊形成一個封裝的「東西」,你不必擔心它在服務器端。如果您沒有JavaScript,則只顯示兩個文本字段,它們會優雅地降級。 – HerrSerker

相關問題