2013-02-26 52 views
1

我有一個動態生成的表單,我從異步AJAX調用中獲得,並且我在JSON對象中提供了一些設置。我想針對一個字段專門用jQuery,所以我加載JSON數據到一個JS變量,它的工作:根據JSON數據使用jQuery定位元素

var jsonData = {{response.write(session.j_jsondata, escape=False)}}; 
/* 
I'm using Web2Py, so the part between the double curly braces is equal to: 
{'fields': [{'required': 'true', 'type': 'mtext', 'name': 'desc'}]} 
*/ 

的數據被正確地加載到變量,但後來當我想爲目標的東西從jsonData.fields名稱[somenumber] .NAME這是行不通的。我已經嘗試過這樣的:

jQuery("form [name="+jsonData['fields'][i]['name']+"]") 

我沒有得到任何錯誤。任何想法,爲什麼它沒有針對預期的元素?謝謝!

編輯: 我試着改變了一下結構。相反,使用的名字,我選擇的ID(我更新的模板視圖以及OFC),並切換到

jQuery("#"+jsonData['fields'][i]['name']) 

,但仍沒有雪茄。它可能有一些問題,因爲該字段是在AJAX調用後生成的,但這很奇怪,因爲腳本是在生成表單後調用的。所以發生的最後一件事就是執行這個腳本,它的目標是表單元素,但它不起作用。巫術。

+0

「我」具有正確的價值嗎?由於您不知道(我假設)選擇器是否正確生成,請設置斷點並期望變量。要了解如何做到這一點(如果您還沒有這樣做),請查看http://www.netmagazine.com/tutorials/javascript-debugging-beginners。 – 2013-02-26 10:43:29

+0

@FelixKling是的,我們可以說,我= 0,這不是問題 - 當我使用特定的元素ID時 - 一切正常 - 問題出現在jQuery中(「form [name =」+ jsonData ['fields'] [ i] ['name'] +「]」)但是我不知道在哪裏:( – Dropout 2013-02-26 10:56:56

+1

正如我所說的,調試!我們不能運行代碼,所以我們不能爲你做這些。調用'console.log(「form [name =「+ jsonData ['fields'] [i] ['name'] +」]「)'就在選擇之前,看看輸出是什麼,選擇器是否正確?該表單存在(因爲它是通過Ajax加載的)? – 2013-02-26 10:58:06

回答

2

在本地網頁測試後,我注意到,你不能有形式和左方括號之間的空間,讓你的選擇應該是:

jQuery("form[name="+jsonData['fields'][i]['name']+"]") 

乾杯,

特倫斯。

+0

取決於你在找什麼。是後代選擇器,OP的選擇器在每個表單內搜索一個具有特定名稱的元素(這是有道理的,因爲表單控件有名稱),而你的搜索表單元素的名稱是這樣的,它的語義是不同的 – 2013-02-26 10:46:59

+0

指定「form [name]」然後,你應該考慮指定「form input [name]」 - 我敢肯定你不能提供一個名字作爲選擇器,如果你明白我的意思。(或形式選擇[名稱]取決於你有什麼類型的輸入) – 2013-02-26 10:51:20

+0

但我有一個表單,其中包含一個名稱的元素..它不是形式的名稱.. – Dropout 2013-02-26 10:51:38

2

也許這是因爲缺少屬性選擇器的引用。試試這個:

$('form [name="'+jsonData['fields'][i]['name']+'"]') 
+0

假設一切都是正確的,這是最可能的原因 – 2013-02-26 10:46:15

+0

...但如果名稱是一個si單詞,它也應該沒有引號。 – shere 2013-02-26 10:47:01

+0

nope,仍然沒有:(謝謝無論如何 – Dropout 2013-02-26 10:50:25