2012-07-22 92 views
0

我有一個表單,我正在設置頁面加載框(文本框,選擇框,無線電框)的值,如下所示。在頁面加載之前設置DOM項目的值JQUERY

<script> 
$(function() { 
    $("#text").val(\''.$_GET['q'].'\'); 
    $("#category").val(\''.$_GET['cat'].'\'); 
}); 
</script> 

但主要的問題是,第一頁加載空箱和後第二或有時超過第二它加載值框。在所有box're設置值之後,如何顯示頁面?這必須在jQuery中。

P.S.請不要爲我提供php解決方案。如果有可能只有jQuery解決方案。

謝謝。

回答

1

爲什麼它必須在jQuery中,爲什麼不能在普通的javascript中設置值,或者直接在HTML中直接更好,因爲我假設$ _GET引用了PHP變量,以及用於設置這些值的方法似乎完全沒有必要?

<input type="text" value="$_GET['q']" id="text" /> 

或元素之後放置普通的js

<script type="text/javascript"> 
    document.getElementById('test').value = $_GET['q']; 
</script> 

跳過一些奇怪的逃逸和concentanation和did'nt在意所有不同的報價,你必須弄清楚這些出你自己,只是爲了說明我該怎麼做?

jQuery一直等到DOM和其中的所有內容都被加載,所以你已經有了jQuery解決方案。這意味着jQuery代碼將始終在直接設置值之後執行,或者在元素可用時儘快使用純javascript。

如果您真的不關心用戶體驗或加載時間,你可以在你的CSS中將body標記設置爲display:none,並在你的jQuery腳本中設置值後使用$('body').show();,這是一個jQuery解決方案,但這是一個糟糕的解決方案!

+0

首先感謝。我瞭解你,我知道用php設置是無憂無慮的解決方案。但是表單非常動態,大多數項目都會在另一個盒子的變化上加載,所有這些都是在jQuery中完成的。我不能在PHP中看到所有的框,因爲它們中的一些是由jquery生成的。我只想在設置所有值後顯示頁面。 – 2012-07-22 16:54:06

+0

是的,車身顯示解決方案不好。你還能建議我什麼?我是否正確地解釋了這種情況? – 2012-07-22 16:57:30

+0

嗯,我認爲這個問題沒有問題,但IMO的最佳解決方案是找到一些方法將這些PHP值從$ _GET直接設置到元素。你已經將它們設置在document.ready上了,而不是在某個特定的事件上,所以直接在PHP中生成表單的時候將它們設置爲相同,只需要更多的工作來確定插入它們的位置如果表單很複雜,但是它是迄今爲止最好的解決方案,並且是唯一一個將頁面加載填充的表單,因爲所有JavaScript解決方案都必須在事實之後插入它們。 – adeneo 2012-07-22 17:28:26