Это первый javascript, который я правильно пытаюсь выполнить.
Чего я пытаюсь достичь:
- пользователь фокусируется на элементе ввода, а данные из атрибутов сохраняются в переменных
keyup
добавлен прослушиватель событий к элементу ввода
- когда пользователь нажимает ввод, значение отправляется через ajax в базу данных
- после нажатия клавиши ввода удалить прослушиватель событий
Примечание: Идентификатор входного элемента динамически создается с помощью php, поэтому причина update(this.id)
.
Моя проблема в том, что появляется ошибка, когда я сосредотачиваюсь на элементе, и я не думаю, что аргумент removeEventListener()
handler
соответствует addEventListener()
, это правильный способ соответствия тот же обработчик, который использовался в addEventListener
?
В этой статье написано
Обратите внимание: если мы не сохраним функцию в переменной, мы не сможем ее удалить.
Именно поэтому я поместил аргумент handler
в функцию enter()
.
Любая помощь наиболее ценится!
Другие ссылки:
Вызов Ajax при нажатии клавиши ввода
Документация removeEventListener
JavaScript:
function enter() {
function(event) {
console.log("Key has been released")
event.preventDefault()
//in the event of the user releasing 'ENTER' on the keyboard
if (event.keyCode === 13) {
console.log("'ENTER' key pressed")
//creates variable to store the value of the element (attribute 'value', of input element: value='". $row['may'] .""')
var inputValue = input.value
// alert(input.value)
$.ajax({
type: 'POST',
url: 'php script/update_values.php',
dataType: "json",
async:false,
data: {id : id, input : inputValue, owner : owner, monthName : monthName},
success: function(response){
console.log(response.ajaxResponse)
}
});
}
}
}
//onfocus calls function with id='x' in contstructor to update score
function update(x) {
console.log("User focused on input element.")
//variable to assign the input element being updated
var input = document.getElementById(x)
//store data in variables to be sent to script
var id = input.getAttribute("data-id")
var owner = input.getAttribute("data-owner")
var monthName = input.getAttribute("data-monthName")
//add an event listener to the input element (if a key is released executes 'function(event)')
input.addEventListener("keyup", enter)
input.removeEventListener("keyup", enter)
}
<input id="1" onfocus="update(this.id)" data-reference="1" data-owner="Joe Bloggs" data-monthName="dec" data-monthValue="" type="" value="220000"/>