bugfix> javascript > 投稿

1つのページに4つのフォームがあり、それらすべてに1つのパスワード検証機能を割り当てたいです。現在のパスワードフィールドのIDを取得し、さらに検証を行いたい。

次のように、現在の入力パスワードフィールドのIDを取得します。

var id = $(this).attr('id');

今、私は三元 if を使用したいIDを確認し、変数に値を割り当てます。例えば:

var a
if id==1
  a= "a";
else if id==2
  a= "b";
else if id==3
  a = "c"
else if id==4
  a = "d"

どんな助けも大歓迎です。

回答 3 件
  • 三項演算子によって、あなたはこれを参照しています:

    var value = (condition) 
        ? 'result if condition is true' 
        : 'result if condition is false';
    
    

    オブジェクトまたは switch を使用すると思います  より明確にする必要があります。

    例えば:

    var values = {
        1: 'a',
        2: 'b',
        3: 'c',
        4: 'd',
    }
    var id = $(this).attr('id');
    var result = values[ id ] ? values[ id ] : 'default';
    // Alternative syntax using the || operator
    var result = values[ id ] || 'default';
    
    

    switch を使用する  声明。

    var id = $(this).attr('id');
    var result = getValue( id );
    function getValue( id ) {
        switch( id ) {
            case 1: return 'a';
            case 2: return 'b';
            default: return 'default value';
        }
    }
    
    

  • 本当に三項演算子を使用したい場合:

    var id = $(this).attr('id');
    var a = (id==1) ? "a" : (id==2) ? "b" : (id==3) ? "c" : (id==4) ? "d" : undefined;
    
    

    ただし、同じ変数を switch を使用してそのような比較をいくつか行う必要がある場合  より良い選択でしょう:

    var a;
    switch ($(this).attr('id')) {
      case 1:
        a = "a";
        break;
      case 2:
        a = "b";
        break;
      case 3:
        a = "c";
        break;
      case 4:
        a = "d";
        break;
    }
    
    

    idの値が実際に連続した数値である場合、代わりに配列を使用することもできます。

    var id = $(this).attr('id');
    var a = [, "a", "b", "c", "d"][+id];
    
    

  • var something = ["a", "b", "c", "ddddd"];
    $("form").on("submit", function(evt) {
      evt.preventDefault();
      
      var $password = $(this).find("[name='password']");
      var bla = something[ +$password[0].id - 1 ]; // -1 since it's index (0) based
      
      console.log(bla)
      
    });
    
    
    <form>
      <input id="1" type="password" name="password" placeholder="Password">
      <input type="submit">
    </form>
    <form>
      <input id="3" type="password" name="password" placeholder="Password">
      <input type="submit">
    </form>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    

あなたの答え