Как использовать условный оператор для присвоения идентификатора?
У меня есть четыре формы на одной странице, и я хочу назначить одну функцию проверки пароля для всех них. Я хочу получить идентификатор текущего поля пароля и выполнить дальнейшую проверку.
Я получаю свой идентификатор текущего поля ввода пароля следующим образом:
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 ответа
Тернарным оператором вы обращаетесь к этому:
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>