2016-12-07 4 views
0

Когда я помещаю код сценария над текстовым полем, он не работает, но если я размещаю код под полем ввода, он работает.Скрипт Keydown работает только при размещении кода сценария под полем ввода?

<script src="js/jQueryv3.1.1.js" type="text/javascript"></script> 

<script> 
$("input").keydown(function(e){ 
    alert(); 
}); 
</script> 

<input type="number" id="phoneNo" /> 

НЕ РАБОТАЕТ

НО НИЖЕ РАБОТЫ

<script src="js/jQueryv3.1.1.js" type="text/javascript"></script> 

<input type="number" id="phoneNo" /> 

<script> 
$("input").keydown(function(e){ 
    alert(); 
}); 
</script> 
+1

Вы забыли задать вопрос. Но так или иначе, в первом браузере выполняется сценарий * перед *, элемент ввода был проанализирован, поэтому '$ (" input ")' не может его найти. Если вы хотите поместить скрипт выше, вы должны использовать обработчик документа для задержки выполнения любого кода, который пытается получить доступ к элементам DOM. – nnnnnn

+0

@phpNoob Здесь вы должны увидеть **. Load(), .ready() ** события jquery. – Jai

+0

Спасибо, что сделали это – phpNoob

ответ

2

Оберните код $ (документ) .ready() как:

$(function() { 
    $("input").keydown(function(e){ 
     alert(); 
    }); 
}); 

или

$(document).ready(function() { 
    $("input").keydown(function(e){ 
     alert(); 
    }); 
}); 

JQuery не удалось найти элемент ввода при определении его перед го e, но когда вы будете писать то же самое после поля ввода, в это время он получит информацию о поле ввода.

Надеюсь, это поможет вам.

0

Предположим, что вы хотите присоединить обработчик к alreadt определенный элемент, вы можете использовать

$("input").keydown(function(e){ 
    alert(); 
}); 

, как у вас есть уже использован.

Однако, если вы хотите присоединить обработчик события к динамическому элементу (тот, который вы создаете позже), вы можете использовать:

$(document).on('keydown', 'input', function(e){ 
    alert(); 
}); 
+0

Код OP не содержит динамически созданных элементов. – nnnnnn

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

  • Нет связанных вопросов^_^