2017-04-01 2 views
1

私は3つの入力を持っており、それらが空であるかどうかをチェックし、そうであれば変数の値が入力に加えられます。Javascriptはif文をよりよく解決しますか?

だから私は値を持つ3つの変数があります。入力は空であり、彼らがしている場合、私は入力に変数の値を追加する場合、ページのロード時ので

var input1text = "something here"; 
var input2text = "something else here"; 
var input3text = "something else 2 here"; 

を、私は確認してください。

if($('#input1').val() == '') { 

    //Add input1text text to it 

} 

if($('#input2').val() == '') { 

    //Add input2text text to it 

} 


if($('#input3').val() == '') { 

    //Add input3text text to it 

} 

私の質問は、それがこれを行うには、複数のifで最もエレガントな方法を持っている:このように

?より良い方法がありますか?

+0

純粋なJavaScriptのための簡単forEachquerySelector()で試してみてください – mehulmpt

+0

は 'input1text'、' input2text'は空にできますか? – mehulmpt

+0

私が見るのは、同じ条件の3つで、いくつかのコメントがあります。 – PHPglue

答えて

0

あなたはすべての入力をチェックする.each()を使用して、それが空の場合は可能性 - の値を保持する配列から対応する値を割り当てます。

var inputs = ['something here', 'something else here', 'something else 2 here']; 
 
    
 
    $('input').each(function(i){ 
 
     $(this).val() == '' ? $(this).val(inputs[i]) : null; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id='input1' value='x'> 
 
<input id='input2'> 
 
<input id='input3'>

var inputs = {input1:'something here', input2:'something else here', input3: 'something else 2 here'}; 
 
    
 
    $('input').each(function(i){ 
 
     $(this).val() == '' ? $(this).val(inputs[$(this).attr('id')]) : null; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id='input1' value='x'> 
 
<input id='input2'> 
 
<input id='input3'>

+0

この回答の注文事項。それは理想的ではありません。 – MyiEye

+0

@MyiEye注文に何が問題なのですか? –

+2

配列内の順序は、dom内のhtml要素の順序と一致する必要があります。 – MyiEye

0

フィールドをチェックしてデフォルト値を設定する操作の抽象化を抽出することができます。

var fields = [{ 
    selector: "#input1", 
    defaultVal: "default1" 
}, { 
    selector: "#input2", 
    defaultVal: "default2" 
}, { 
    selector: "#input3", 
    defaultVal: "default3" 
} 
]; 

var setDefault = function (selector, default) { 
    if($(selector).val() == '') { 
     $(selector).val(default); 
    } 
} 

for (var i = 1; i < fields.length; i++) { 
    var field = fields[i]; 
    setDefault(field.selector, field.defaultVal); 
} 
+0

'setDefault'は実際に何もしていません。あなたはデフォルトの割り当てを忘れました –

+0

@ YogeshMistryこれはパターンを実装する例です。コメントのように、割り当てはコメント '/ /それに入力テキストを追加します' – elpddev

+0

Ok。 '$(selector)' .val(default); 'too –

1

あなたは、キーを使用してHTML要素のIDを、オブジェクトを作成し、そのデフォルト値を値できます。そして、

var inputDefaultValues = { 
    "input1": "something here", 
    "input2": "something else here", 
    "input3": "something else 2 here" 
}; 

よこれについて

Object.keys(inputDefaultValues) 
     .forEach(function(key){ 
      var inputElement = document.getElementById(key); 
      if(inputElement.value === ''){ 
       inputElement.value = inputDefaultValues[key]; 
      } 
     }); 

var inputDefaultValues = { 
 
    "input1": "something here", 
 
    "input2": "something else here", 
 
    "input3": "something else 2 here" 
 
}; 
 

 
Object.keys(inputDefaultValues) 
 
     .forEach(function(key){ 
 
      var inputElement = document.getElementById(key); 
 
      if(inputElement.value === ''){ 
 
       inputElement.value = inputDefaultValues[key]; 
 
      } 
 
     });
<input type="text" id="input1"/> 
 
<input type="text" id="input2"/> 
 
<input type="text" id="input3"/>

1

方法:対応する要素の値が空の場合、デフォルト値をapllyする空の場合uが、このオブジェクトのキーをループチェックすることができます - 順序は関係なく、超柔軟性と超小型です。

var defaults = { 
    "#input1": "something here", 
    "#input2": "...", 
    "#input3": "..." 
}; 

for (var id in defaults) { 
    var currVal = $(id).val(); 
    $(id).val(currVal.trim() || defaults[id]); 
} 
+0

dvの理由はありますか? :-D – MyiEye

+0

この回答は正確で一般的なようです –

0

あなたが最初の1自体に入力したテキストを設定している場合、なぜ他の2を実行しますか?

var input1text = 'something here'; 
 
var input2text = 'something else here'; 
 
var input3text = 'something else 2 here'; 
 

 
document.querySelectorAll('input').forEach(function(a,b){ 
 
a.value = a.value ? a.value :window['input'+(b+1)+'text'] ; 
 
})
<input id="1" value="dddddddd"><input id="2"><input id="3">

関連する問題