Как использовать условный оператор для присвоения идентификатора? - PullRequest
0 голосов
/ 25 мая 2018

У меня есть четыре формы на одной странице, и я хочу назначить одну функцию проверки пароля для всех них.Я хочу получить идентификатор текущего поля пароля и выполнить дальнейшую проверку.

Я получаю свой идентификатор текущего поля ввода пароля следующим образом:

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

Теперь я хочу использовать троичный if чтобы проверить идентификатор и присвоить значение переменной.Например:

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 ]

0 голосов
/ 25 мая 2018

Если вы действительно хотите использовать троичный оператор:

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];
0 голосов
/ 25 мая 2018

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>
0 голосов
/ 25 мая 2018

Тернарным оператором вы ссылаетесь на это:

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';
    }
}
...