2012-02-08 35 views
0

我有以下代碼:獲取文本或複選框使用jQuery的價值,並把它變成一個變量

$("input[id^='Order_'], input[id^='Default_']") 
    .change(function (e) { 
     var type = $(this).attr('id').split('_')[0]; 
     updateField('Menu', $(this), type); 
}); 

The input with an id of 'Order_' has a type="text" 
The input with an id of 'Default_' has a type="checkbox" 

在我UPDATEFIELD我有一個問題:

function updateField(entity, obj, type) { 
    var val = obj.val(); 
    var idArr = obj.attr("id"); 
    var idTmp = idArr.split("_"); 
    var id = idTmp[1]; 
    var pkrk = $("span[id='refKey_" + id + "']").html(); 

的問題是該代碼適用於文本,但不適用於複選框。如果該複選框被選中或不是,那麼它仍然返回true。如果複選框被選中或沒有被選中,是否有方法可以獲取值,並將字符串「true」或「false」放入變量val中,同時如果日期來自Order_?

So if the value of Order_ field is 25 then val = "25" 
So if the value of Default_ checkbox is true the val = "true" 
So if the value of Default_ checkbox is false the val = "false" 
+1

重複? http://stackoverflow.com/questions/3064629/get-value-of-a-checkbox – iblue 2012-02-08 11:51:19

+0

感謝您的鏈接。我認爲我的情況有點不同,因爲我需要決定它是一個複選框還是文本字段,並基於該決定,然後我需要一種不同的方式來獲取該值。 – Jessica 2012-02-08 11:58:17

回答

2

問題是該複選框沒有任何「值」。而不是在jQuery中使用val()函數搜索屬性「checked」。 這是可以做到這樣:

var checked = !!$("checkbox selector").attr("checked"); 

或者使用jQuery選擇

var checked = $("checkbox selector").is(":checked"); 

所以attr()函數將返回undefined如果犯規包含屬性複選框標籤「檢查」,這是相同的作爲複選框的未選中狀態。

+0

用於'!!'從「truthy/falsy」轉換爲實際布爾值。 – pete 2012-02-08 12:02:43

+0

但我想把它放到名爲「val」的變量中,並且我需要一些邏輯,如果它是複選框或文本字段,它們將會有所不同。有沒有辦法我檢查傳遞給updateField的obj的值,然後根據對象的類型做不同的事情? – Jessica 2012-02-08 12:08:25

+0

@Jessica你可以使用'obj.attr(「type」)===「複選框」來確定它是否是一個你當前正在處理的複選框(並且要小心函數參數類型創建的confiusion)。 – 2012-02-08 12:32:15

相關問題