2011-06-06 27 views
2

我有一個頁面,可以使用jQuery UI可拖動的方式移動段落標記。無論何時移動段落標記,該標記的內聯樣式都會如此更改:使用php,如何保存段落標籤的屬性值?

position: relative; left: 280px; top: 300px; 

我有一個直接位於其下的窗體。當我提交表單時,我想讓php保存這兩個屬性值(頂部&左側)。

如何保存段落標記的多個屬性值?

我發現THIS的答案,但我不明白$ attrs數組的來源或內容。也許這就是我錯過的東西?

+0

我會建議使用Paul Dixon的答案,但只是爲了說清楚,$ attrs來自$ a = $ dom-> getElementsByTagName(「a」);你可以在你附加的問題中找到它。 http://php.net/manual/en/domdocument.getelementsbytagname.php – 2011-06-06 08:12:09

回答

2

一種方法是使用jQuery事件處理函數submit(),以便在表單發送之前,讀取段落的位置並將其存儲在隱藏的表單域中。

另一種方式是每當用戶更改段落位置時更新一些隱藏的表單域。

(編輯:你參考答案是關於處理上服務器端的HTML DOM,而這個問題是真的對客戶側這比PHP的一個Javascript腳本的問題)

1

我爲應用程序使用了一個隱藏標籤,它保存了幾個DOM元素的位置。只要記住在你的PHP腳本中收到它們的時候檢查它們的值。 ('#element').css('top')和.css('left')會給你他們的價值。 編輯: 或者您可以使用位置來獲得它們的值或者通過.POSITION()或.offset()

position = $('#element').position(); 
// or 
position = $('#element').offset(); 
// position.left and position.top 

哪一個你應該選擇depends on how the element is positioned.

0

你不能從PHP這樣做直接。除非瀏覽器將該信息發送到腳本,否則PHP不會知道瀏覽器中發生的任何事情。

您需要手動發送topleft值。最好的辦法是監聽提交事件:

$('#myForm').submit(function(e) { 
    e.preventDefault(); 
    var position = $('#yourP').position(); 

    $('<input/>', {type: 'hidden', name: 'left', value: position.left}).appendTo(this); 
    $('<input/>', {type: 'hidden', name: 'top', value: position.top}).appendTo(this); 

    this.submit(); // submit the form with the extra values 
}); 

你可以接着用$_POST['top']$_POST['left']訪問這些值在你的PHP腳本(或GET等價物,如果你的表單使用GET)。

+0

我試過你的方法,表單現在不提交。我也嘗試將$('')換成$('input'),看看這是否是問題,但這似乎不能解決問題。'some.submit()''它提交表格,因爲它應該。 – zeckdude 2011-07-02 09:03:26

+0

這是我使用的確切代碼:http://pastebin.com/AxkfqXe0 – zeckdude 2011-07-02 09:16:22

相關問題