如何确定对象是“text”还是“checkbox”类型?

时间:2012-02-08 12:27:47

标签: jquery

我有以下代码:

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

在updateField函数中有一种方法可以确定传递的obj是“text”还是“checkbox”类型?

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

8 个答案:

答案 0 :(得分:3)

您可以检查字段的“类型”属性:

obj.attr('type');

答案 1 :(得分:3)

尝试:

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

答案 2 :(得分: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始终属于textcheckbox类型:

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

答案 3 :(得分:2)

使用.attr()获取type属性并使用if statement确定它的类型。

e.g。

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

if (type == "checkbox") {

// It's a checkbox

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

//It's text

}

答案 4 :(得分:2)

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

答案 5 :(得分: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

答案 6 :(得分:1)

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

答案 7 :(得分: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