2014-01-29 45 views
0

我創建了一個包含外部PHP文件和外部JS的Drupal站點。 他們都似乎工作。通過Javascript更改Webform隱藏值

然後我添加了一個包含一些隱藏字段的webform。 JS的功能之一必須改變這些隱藏字段的值。 在頁面源代碼上,我看到這些字段被命名爲「提交[comp_name]」,其中comp_name是webform中定義的特定字段的名稱。

JS函數有兩個輸入形式參數,一個是comp_name,另一個是id。追蹤目標是將id值設置爲comp_name字段。

我想:

document.getElementByName("submitted["+comp_name+"]").value = id; 

$("#submitted["+#comp_name#+"]").val(id); 

但是當我嘗試發送網絡表單中,隱藏值保持不變爲默認值。

我做錯了什麼? 是否有可能通過javascript更改webform隱藏值?

回答

0

看來submitted["+comp_name+"]是你的元素的name,但在JavaScript中,我們不要「T有document.getElementByName,但你可以做到這一點,如:

document.querySelector("input[name='submitted["+comp_name+"]']").value = id; 

或使用jQuery做:

$("input[name='submitted["+comp_name+"]']").val(id); 

但如果submitted["+comp_name+"]id做到這一點:

document.getElementById("submitted["+comp_name+"]").value = id; 

或使用jQuery:

$("#submitted["+comp_name+"]").val(id); 
+0

querySelector適合我! :-) 非常感謝你梅赫蘭! – Danidan

0

如果submitted[comp_name]是該領域的id="",那麼這應該工作:

$('#submitted[' + comp_name + ']').val(id); 

沒有#您在#comp_name#使用。

然而,如果submitted[comp_name]是該領域的name="",並且該字段是一個<input>元素,然後做這個:

$('input[name=submitted[' + comp_name + ']]').val(id); 
+0

謝謝馬格努斯!對不起,#comp_name#中的#是輸入問題的拼寫錯誤... – Danidan