2013-06-24 5 views
2

Я пытаюсь написать простой скрипт, который возьмет список URL-адресов, которые мне нужно сохранить, добавить их в массив и затем выложить этот массив в div. Проблема, с которой я сталкиваюсь, заключается в том, что я использую «.onKeyUp» для вызова функции. Он работает, но когда я использую ctrl + v для вставки, функция вызывается дважды. Когда вы отпускаете букву v и один раз, когда вы отпускаете элемент управления. Как я могу исправить его так, что он будет вызывать функцию только один раз, когда я использую сочетание клавиш? Вот мой код:Вызов функции JS после нажатия комбинации клавиш?

<script type="text/javascript"> 
    var arr = new Array(); 
    function procession() { 
     var urlin = document.getElementById('url').value; 
     var smacky = "<br/> the url is: " + urlin + "<br/> the url is: www." + urlin; 
     arr.push(smacky); 
     document.getElementById('list').innerHTML = arr; 
    } 
</script> 


<form> 
    <input onkeyup="procession();" type="text" size="50" id="url"/> 
</form> 
<div id="list"></div> 

Важное примечание. Это долгая история, но я не могу использовать jQuery для этого скрипта. Есть ли способ сделать это только в чистом javascript?

ответ

2

Pass в event к вашему onKeyUp, если ключ является ctrl, возвращение ложным. Это будет зарегистрировать только одно событие KeyUp для ярлыков Сейчас:

<input onkeyup="procession(event);" type="text" size="50" id="url"/> 

JS:

function procession(e) { 
    //if ctrl key, return false 
    if (e.which == 17) return false; 

    //do stuff 
    var urlin = document.getElementById('url').value; 
    var smacky = "<br/> the url is: " + urlin + "<br/> the url is: www." + urlin; 
    arr.push(smacky); 
    document.getElementById('list').innerHTML = arr; 
} 

Это немного хак-иш, но он должен получить работу.

+0

Sweet! Благодарю. Это сделал трюк. Я приму это, как только они меня отпустят. –

+0

Удивительный, рад, что он сделал то, что вам нужно! – tymeJV

+1

Это было бы чище для вставки Я думаю: 'if (event.keyCode == 86 && event.ctrlKey)' – Jonathan

1

Здесь:

$(document).on("paste", function(event) { 
    alert("paste!"); 
}); 
+0

Спасибо, но я не могу использовать jQuery для этого ... как я могу сделать это только в javascript? –

+0

К сожалению. Ну, вы должны написать свой собственный кросс-браузер EventListener в этом случае: вот некоторая информация http://www.quirksmode.org/dom/events/cutcopypaste.html – Jonathan