2012-09-21 92 views
1

所以我使用隱藏的表單字段並使用我的JQuery代碼onSubmit中的數據填充它。問題是,JQuery填充BOTH Type =「隱藏」字段。我只希望它填充名稱=「時刻」一個,我該如何解決這個問題?使用隱藏的表單字段

這裏是我的html:

<form method="post" action="momentactions.php"> 
    <input type="hidden" name="album_id" value="<?php echo $album_id; ?>"> 
    <input type="hidden" name="moment"> 
    <input type="submit" name="submit" value="submit"> 
</form> 

這裏是我的JQuery:

$('form').on('submit', function() { 
    values = []; 
    $('#container-top img').each(function() { 
    values.push($(this).attr('value')); 
    }); 
$('input[type=hidden]').val(JSON.stringify(values)); 
}); 

回答

3

簡單:

input[type="hidden"][name="moment"] 

但還是 - 這不是一個好主意,提取所有值,序列化它們,併發送序列化的

+0

那簡單嗎?!謝謝! :) – user1592953

+0

downvote的任何解釋?還是隻是另一個愚蠢的羣衆downvoter,不喜歡我的評論真相? :)) – zerkms

+0

@zerkms +1,投票是不必要的,因爲這是正確的選擇。也許在你的回答中指出它只是選擇者? – Mark

2

試試這個

$('input[type=hidden][name=moment]').val(JSON.stringify(values)); 

另外不要忘記關閉輸入標籤..

$('input[name=moment]') 
$('input[name=moment]:hidden') 

都是有效的選擇..

+1

輸入標記不需要關閉(除非您使用xhtml,當然,否則可能會認爲關閉它們是錯誤的)。 – nnnnnn

0

我建議你加入ID = 「時刻」 上輸入標籤它

<input type="hidden" name="moment" /> 

變化

<input type="hidden" name="moment" id="moment" /> 

等你的代碼,你可以只使用

$('input#moment').val(JSON.stringify(values)); 
+0

雖然這也可以起作用,但它並不是必需的,名稱屬性也會起作用,因爲它已經存在。 – Mark

+1

如果使用的選擇器很簡單,則運行速度會更快。也可以更容易維護 – fedmich

+1

我沒有投票。只是指出一些東西。除非答案實際上不正確,否則我不投票。 – Mark

3

這行代碼

$('input[type=hidden]') 

說:「給我一個類型的隱藏所有輸入元素」,因爲你只想要一個他們可以做一些不同的事情。

你可以給你所需的輸入域的ID,然後使用jQuery的ID選擇器(#):(。)

$('#idgoeshere') 

或者你可以給你所需的輸入域的一類,用類選擇:

$('.classgoeshere') 

,或者你可以保留當前的HTML和使用屬性選擇器,就像當前的選擇只有一個不同的屬性:

$('input[name="moment"]')