2017-01-20 4 views
9

Пожалуйста, выполните следующие два шага:Как я могу обнаружить определенный элемент?

  • внимание на input, нажав на нее
  • и теперь нажмите на button

$("input").on({ 
 
    focusout: function() { 
 
    \t this.value += "one|"; 
 
    } 
 
}); 
 

 
$("button").on("click", function(){ 
 
    $old_val = $("input").val(); 
 
    $("input").val($old_val+"two|"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" /> 
 
<button>Add "two"</button>

Результат будет : one|two|! Ну, я не хочу этого. Я хочу отключить focusout, когда я нажимаю на кнопку. Как я могу это сделать?

Ожидаемый результат после следующих двух шагов: two|.

+6

focusout происходит перед нажатием кнопки, так что вы не можете «отключить focusout при нажатии на кнопку», как это уже уволили. –

+0

@ freedomn-m Не могу установить условие 'if' в' focusout', чтобы проверить следующее событие, и если следующее событие нажимает на кнопку, то возвращает false? –

+2

Можете ли вы подробно рассказать о своем требовании? Что вы пытаетесь достичь (за пределами «Я хочу, чтобы это было два?» - почему это должно быть?) Это похоже на проблему XY: где вы пытаетесь решить X, выполняя Y, и поэтому хотите знать как Y - если мы знаем, что такое X, мы можем помочь –

ответ

2

Вы хотите, чтобы кнопка не вызывала событие mousedown по умолчанию, в котором браузеры меняют фокус. Использование e.preventDefault() остановит это, если вы присвоите его событию mousedown на кнопке.

$("input").on({ 
 
    focusout: function() { 
 
    \t this.value += "one|"; 
 
    } 
 
}); 
 
$("button").on("mousedown", function(e) { 
 
    e.preventDefault(); 
 
}); 
 
$("button").on("click", function(){ 
 
    $old_val = $("input").val(); 
 
    $("input").val($old_val+"two|"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" /> 
 
<button>Add "two"</button>

+0

Я думаю, вы удалили комментарий, но он не отключает фокус ... запустите фрагмент и нажмите на ввод и затем нажмите где-нибудь, кроме кнопки – Chase

+1

. Что это делает, это эффективно изменить порядок событий, нажав кнопку перед фокусом, тем самым позволяя OP добавлять код для восстановления ove focusout ... или что-то :) –

+0

@ freedomn-m Да. Отличная идея, не так ли? '' ;-) –

Смежные вопросы