2009-12-18 54 views
0

內異常行爲,我使用jQuery的ThickBox的插件(版本3)和裏面我想將將使用.post的$提交表單。但是表單元素並不像他們應該那樣表現。對於例如有一個選擇框表單元素一個jQuery ThickBox的

<select name="priority" id="priority"> 
    <?php for($i = 5; $i > 0; $i--){ ?>           
      <!-- <input type="radio" class="star" name="priority" value="<?php echo $i ?>"> --> 
      <option value="<?php echo $i; ?>"><?php echo $i; if($i == 5) echo ' (lowest)'; if($i == 1)echo ' (highest)'; ?></option>    
    <?php } ?> 
    </select> 

當我點擊調用提交功能按鈕,

function add(){ 
    var pr = document.getElementById("priority").value; 
    console.log(pr); 

} 

它會提醒只有第一個值,即。 5無論選擇何種選項。

請幫忙。這是一個普遍面臨的問題嗎?

回答

1

當你使用jQuery,你應該使用

var pr = $("#priority option:selected").val(); 

var pr = $("#priority").val(); 

,而不是

var pr = document.getElementById("priority").value; 

這應該解決它

看到http://docs.jquery.com/Attributes/val更多一世NFO

+0

其實這是我最初寫的,但當它失敗時,嘗試了基本的js。根據我的知識document.getElementById應該與jquery一起工作。請更正 – naiquevin

1

使用jQuery:

var pr = $("#priority option:selected").val(); 

如果你想使用純JavaScript,你應該能夠做到:

var i = document.getElementById("priority").selectedIndex; 
var options = document.getElementById("priority").options; 

var value = options[i].value; 
+0

+1 doh!這就是我的答案出錯的地方,需要刷上我的jQuery! – Rowan

+0

有趣的是,我只是試圖$('#priority')。val(),它確實工作正常。 –

+0

是的,我只是再次檢查出來,我原來是對的。這兩種方法都是有效的。 – Rowan

1

我不知道具體的ThickBox,但形式的共同問題許多燈箱喜歡的工具。原因在於工具1.將表單元素從表單上下文中取出,2.通常複製到Thickbox/Lightbox/DOM級別的任何內容中。當盒子關閉時,元素被銷燬或重置,而不是很好地移回表單中,並且任何改變的設置仍然存在。

通常可以改變這種行爲,但僅通過改變*盒腳本本身,使其與DOM元素安全轉移來回。