2012-04-16 51 views
1

我正試圖建立一個窗體,禁用用戶從菜單中選擇隱藏字段。在一開始,我可以很容易地禁用所有字段,並且當用戶選擇不同的選項時,我可以重新啓用特定的字段。但是,我需要能夠重新禁用所有字段,當用戶點擊「更改位置」,但我根本無法得到這個工作!jQuery - 無法更新隱藏的輸入屬性

這是我的代碼到目前爲止...我的代碼背後的目的可能不完全清楚,因爲它是爲了清晰的目的而大量編輯,但其他各種不相關的事情發生。我只想說,這是我需要做的:)

的jQuery:

$('input[name="hosted_button_id"]').attr("disabled",true); 

$('#changelocation').click(function(){ 
    $('input[name="hosted_button_id"]').attr("disabled",true); 
}); 


$('.deliveryselection').change(function(){  
    var deliveryLocation = $(this).val(); 
    $('input[title="' + deliveryLocation + '"]').removeAttr("disabled"); 
}); 

HTML:

<select class="deliveryselection"> 
    <option>Please select</option> 
    <option value="UK">UK</option> 
    <option value="Europe">Europe</option> 
    <option value="North America">North America</option> 
    <option value="Rest of World">Rest of World</option> 
</select> 
<a href="javascript:void(0)">Change location</a> 
<form> 
    <input type="hidden" name="cmd" value="_s-xclick"> 
    <input type="button" name="hosted_button_id" title="UK" value="UK"><br /> 
    <input type="button" name="hosted_button_id" title="Europe" value="Europe"><br /> 
    <input type="button" name="hosted_button_id" title="North America" value="North America"><br /> 
    <input type="button" name="hosted_button_id" title="Rest of World" value="Rest of World"><br /><br /> 
    <input type="submit" name="submit"> 
</form> 
​ 

我已經有這個成立於一jsfiddle here:http://jsfiddle.net/solomon/rS7nV/1/

編輯 我想我已經發現了這個問題。在我的實際代碼中,我一直在處理隱藏的字段,而不是按鈕字段,所以我無法直接看到我的勞動成果 - 我一直在使用Firebug來確定隱藏字段的禁用狀態。只有在使用jsfiddle的同時將它們轉換爲按鈕,我才發現我的代碼工作正常(除了我在刪除ID時犯的一個小學生錯誤......感謝您的幫助!)。事實證明,Firebug並沒有更新其報告,並且仍然告訴我這些字段在他們不是時是禁用的 - 儘管我的代碼工作得很好!這有點令人沮喪 - 我的整個下午浪費了一個Firebug的bug! :)

沒關係 - 這一切都是固定現在:)

+1

你可以使用'.prop('disabled',true_or_false)' - 不需要處理字符串屬性。 – ThiefMaster 2012-04-16 14:26:21

回答

3

的問題是,你沒有一個元素與ID changelocation。添加ID,這很好。

http://jsfiddle.net/rS7nV/4/

+0

嗯...這讓我感覺有點愚蠢:)但並不完全,但。它沒有這個ID的唯一原因是我愚蠢地編輯它 - 我的原始源代碼確實有它,但它仍然無法正常工作...更多的想法methinks。至少我知道我的編碼是健全的 - 謝謝:) – Doug 2012-04-16 15:50:55

+0

感謝您的幫助,詹姆斯 - 我已經到了問題的底部,並相應地編輯了我原來的帖子......令人討厭的是我的代碼很好 - 問題是我用來調試的工具! – Doug 2012-04-16 16:57:01

0

如果您得包含隱藏字段的ID的形式,你可以輕鬆地禁用所有的隱藏字段:

$("#hiddenFormId input").attr("disabled", true); 
+0

真的夠了 - 這是精簡腳本的好方法 - 謝謝:) – Doug 2012-04-16 17:53:56

0

聲明一個類的DIV中的使用jQuery作爲叫它下面是

jQuery(「。declariedclassname」)。attr(「disabled」,true);