2012-02-08 57 views
3

我有以下代碼:如何確定對象是「文本」還是「複選框」?

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

在UPDATEFIELD功能是存在的,我能確定的obj傳遞是一種「文本」或「複選框」的一種方式?

function updateField(entity, obj, type) { 
    var val = obj.val(); 
    var val = obj.is(":checked") 
+0

你目前的代碼面臨什麼問題?看來你正在以正確的方式進行。 – 2012-02-08 12:34:17

回答

2

您可以使用:text:checkbox類型選擇:

obj.is(":checkbox") // returns true if element is of type checkbox 
obj.is(":text") // returns true if element is of type text 

See here所有jQuery選擇。

更新如下評論

假設obj永遠是text型或checkbox的:

var val = obj.is(":text") ? obj.val() : obj.is(":checked"); 
+1

我想要做的是將變量val中的「true」/「false」的值存儲在複選框中,如果是文本,則將其存儲爲實際值。有沒有簡單的方法,我可以做到這一點的基礎上使用可能是如果或類似的東西? – Jessica 2012-02-08 12:33:25

+0

@Jessica查看更新 – 2012-02-08 12:36:02

+0

好於'var val = obj.is(「:checked」)? true:obj.val();':) – 2012-02-08 12:37:19

1
function updateField(entity, obj, type) { 
var val = obj.val(); 
var whatAmI = obj.attr('type'); // <==== 
if (whatAmI == 'text') 
{ 
} 
else 
{ 
} 
var val = obj.is(":checked") 
+0

謝謝,我可以讓我的代碼將某些東西放入變量val中,具體取決於它是複選框還是文本?我正在考慮使用,如果聲明,但我不知道如何聲明val。 – Jessica 2012-02-08 12:34:41

+0

查看rick或我的回答。希望這可以幫助你。 – 2012-02-08 12:39:09

3

您可以檢查該字段的 '類型' 屬性:

obj.attr('type'); 
3

嘗試:

var value; 
if (obj.attr('type') === 'text') { 
    value = obj.val(); 
} else if (obj.attr('type') === 'checkbox') { 
    value = !!obj.attr('checked'); 
} 
+0

哇這真的很好。謝謝。 – Jessica 2012-02-08 12:35:14

2

使用.attr()來獲取類型屬性和使用if statement確定哪種類型的它是。

例如

var type = obj.attr('type'); 

if (type == "checkbox") { 

// It's a checkbox 

} else if (type == "text") { 

//It's text 

} 
2
var typeAttr = obj.attr("type"); 
2

我經常做的是:

var nodeType... 
nodeType = $(this).attr("type") || $(this).nodeName.toLowerCase(); 

所以它適用於所有的輸入類型。

對於一個文本框,它將包含:

textarea 

和一個複選框,它將包含

checkbox 

等 一個完整的例子:

function inputType = function($input){ 
    if(!$input.length) { 
    return false; 
    } 
    return $input.attr("type") || $input.nodeName.toLowerCase(); 
} 

inputType($("input[type=text]")) //returns text 
inputType($("textarea")) //returns textarea 
0

試試這個

var val = obj.attr("type") == 'text' 
      ? obj.val() //Value of text box 
      : obj.attr("type") == 'checkbox'; //if it's a check box or not 
相關問題