2012-02-08 16 views
3

I持って次のコード:UpdateFieldを機能でオブジェクトのタイプが「テキスト」か「チェックボックス」かどうかをどのように判断できますか?

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

OBJタイプ「テキスト」または「チェックボックス」である渡された場合、私は判断することができる方法はありますか?

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

現在のコードではどのような問題がありますか?あなたは正しい方法でそれをやっているようです。 –

答えて

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

+0

@Jessica更新を参照してください –

+0

'var val = obj.is( ":checked")よりも優れていますか? true:obj.val(); ':) –

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

+0

リックか鉱山で答えを確認してください。これがあなたを助けることを願っています –

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

2

は、type属性を取得し、それがどのタイプかを決定するためにif statementを使用する.attr()を使用してください。

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 
関連する問題