2016-12-14 2 views
1

Мой код отлично работал, изменив значение входного автоматического на загрузку страницы с задержкой между ним.Имитировать нажатие клавиши [enter] при вводе текста

Но есть еще одна проблема. Когда я попытался имитировать нажатие клавиши [enter] на входе, она не работает, и она отправляет форму и перезагружает мою страницу.

Как я имитирую нажатие клавиши [enter] на входе без отправки формы и без перезагрузки моей страницы? Я использовать чистый javascript без jQuery

Это мой сценарий:

var form \t = document.querySelectorAll("._k3t69"); 
 
var input \t = document.querySelectorAll("._7uiwk._qy55y"); 
 
var message = "Replacement..." ; 
 
var maxMsg = 3 ; 
 
var delay \t = 2.5 * 1000 ; // 2.5 Seconds 
 

 
var j = 0, k = 0; 
 
function setValue(){ 
 
    if(j == maxMsg || j == input.length) { 
 
    \t clearInterval(looping) 
 
    } else { 
 
\t \t input[j++].value = message ; 
 
    //And then simulate pressing enter key ON THE INPUT, not sumbit the form 
 
    form[k++].submit(); 
 
    } 
 
} 
 

 
var looping = setInterval(setValue, delay);
<form class="_k3t69"> 
 
    <input type="text" class="_7uiwk _qy55y"> 
 
</form> 
 

 
<form class="_k3t69"> 
 
    <input type="text" class="_7uiwk _qy55y"> 
 
</form> 
 

 
<form class="_k3t69"> 
 
    <input type="text" class="_7uiwk _qy55y"> 
 
</form>

Here's the fiddle

ответ

3

Отправка формы по умолчанию будет отправить форму и перезагрузите стр.

Если вы хотите, чтобы вызвать нажатие событие:

var input = document.querySelector("._7uiwk._qy55y"); 
var ev = document.createEvent('Event'); 
ev.initEvent('keypress'); 
ev.which = ev.keyCode = 13; 
input.dispatchEvent(ev); 

Если вы хотите проверить, если нажата клавиша ввода:

var input = document.querySelector("._7uiwk._qy55y"); 
input.addEventListener('keypress', function(ev){ 
    if(ev.keyCode === 13 || ev.which === 13){ 
    // enter was pressed 
    } 
}); 

Если вы хотите, чтобы предотвратить отправку формы на въезд/представить:

var form = document.querySelector("._k3t69"); 

form.addEventListener('submit', function(ev){ 
    ev.preventDefault(); 
    // you can do something alternative here e.g. send AJAX request to server 

    return false; 
}); 

JSFIDDLE

+0

Можете ли вы привести пример на jsfiddle или sinippet? –

+0

@ EngkusKusnadi Просто поясните, почему вы хотите запускать событие «keypress», если вы не хотите отправлять форму? –

+0

Просто для тестирования моего сайта –