2016-09-28 2 views
0

Я новичок в веб-разработке, и у меня возникла проблема с использованием jQuery. Я ничего не могу найти в Google. Вот моя проблема:jQuery - сменить пункт при фокусировке другого поля ввода

Я хочу изменить абзац, он должен измениться, если сфокусировано другое поле ввода.

Вот фрагмент кода:

$(document).ready(function() { 
    function() { 
    if ($('#input1').focus()) { 
    $('#paragraph').html("You picked input1!"); 
    } 

    else if ($('#input1').focus()) { 
    $('#paragraph').html("You picked input2!"); 
    } 

    else { 
    $('#paragraph').html("You picked a different input!"); 
    } 
    } 
}); 

код работает один раз, этот пункт говорит: "Вы выбрали input1!" - но я хочу, чтобы событие запускалось каждый раз, когда я фокусирую другое поле ввода. Какая у меня ошибка?

Благодарим вас в ожидании!

+1

Вы должны написать свой код в фокусе. – Mohammad

+1

в вашем другом, если вы снова использовали только input1, измените его на $ ('# input2'). Focus() – vamsi

+0

Что значит? Извините, я новичок @Mohammad –

ответ

1

Вы должны быть привязаны к событию фокусировки для входов. Кроме того, в качестве одного из замечаний государств, вы используете "#input1" в оба условных

$(document).ready(function() { 
    // Assumption is that all #input{number} are input elements 
    $("body").on("focus", "input", funcion() { 
     var $this = $(this); 
     $("#paragraph").text("You focused " + $this.attr("id")); 
    }); 
}); 

Преимущества использования $("body").on("focus", "input", function() {}) в том, что если какие-либо новые входных теги создаются внутри тега тела, событие все равно будет влиять на них.

Я также хочу отметить, что вызов $.focus()является запуск событие фокуса, фактически не проверяя если тег сфокусирован. Для этого вы должны использовать $.is(":focus"), поэтому в вашем коде будет $("#input1").is(":focus")

+0

Отлично работает! Спасибо! –