I need detect `Enter` key `onkeyup()` but dont wor...
# javascript
f
I need detect
Enter
key
onkeyup()
but dont work. Any suggestions why it is failing? Kotlin code:
Copy code
attrs.onKeyUpFunction = {
          it.preventDefault()
          if (it.asDynamic().key === "Enter"  || it.asDynamic().keyCode === 13) onLoginButtonClicked()
}
Javascript Generated:
Copy code
function loginWindow$lambda$lambda$lambda$lambda(closure$onLoginButtonClicked) {
    return function (it) {
      it.preventDefault();
      if (it.key === 'Enter' || it.keyCode === 13)
        closure$onLoginButtonClicked();
      return Unit;
    };
}
s
Hmm, can’t reproduce this on my end. This works for me:
Copy code
onKeyUpFunction = {
    it.preventDefault()
    if(it.asDynamic().key == "Enter") {
        console.log("hit")
    }
}
It also works with
===
for me, and your code snippet with a dummy
onLoginButtonClicked()
also seems fine. Btw, I don’t think this is the right place to use
===
in Kotlin code (triple-equals describes reference equality; https://kotlinlang.org/docs/reference/equality.html#referential-equality)
2
t
@frank Which browser do you use?
f
I have been doing some tests and I've seen that the validation does it perfectly but when it makes the call to the
onLoginButtonClicked()
function it does not manage to enter completely.
It only happens in
onkeyupfunction()
with
onClickFunction()
works.
@Sebastian Aigner, Do you know if there have been problems calling functions in HTML Events? Kotlin Resume Code :
Copy code
fun onLoginButtonClicked(): (Event) -> Unit {
        console.log("onlogin!") //Enter here
        return { //Not enter in return with onKeyUpFunction
            console.log("nickname")
            if (!nickName.isBlank()) {
                console.log(socket)
                socket.emit("join", nickName)
            }else{
                console.log("null = $nickName")
            }
        }
}

div{ //HTML DSL
 input(classes = "nickNameInput") {
    attrs.onInputFunction = onInput()
    attrs.onKeyUpFunction = {
        it.preventDefault()
        if (it.asDynamic().key === "Enter" || it.asDynamic().keyCode === 13) {
            onLoginButtonClicked() //enter here
        }
    }
 }
 button(classes = "loginButton") {
    +"Login"
    attrs.onClickFunction = onLoginButtonClicked() //Works 
 }
}
JS Generated: Resume Code
Copy code
function loginWindow$lambda$onLoginButtonClicked$lambda(closure$props) {
  return function (it) {
    console.log('nickname'); //Not enter in return with onKeyUpFunction
    if (!isBlank(get_nickName())) {
      console.log(socket_0);
      socket_0.emit('join', get_nickName());
    } else {
      console.log('null = ' + get_nickName());
    }
    return Unit;
  };
}

function loginWindow$lambda$onLoginButtonClicked(closure$props) {
 return function () {
 console.log('onlogin!') //Enter here
    return loginWindow$lambda$onLoginButtonClicked$lambda(closure$props);
 };
}
function loginWindow$lambda$lambda$lambda$lambda(closure$onLoginButtonClicked) {
  return function (it) {
    it.preventDefault();
    if (it.key === 'Enter' || it.keyCode === 13) {
      closure$onLoginButtonClicked(); //Enter here
    }return Unit;
  };
}
function loginWindow$lambda($receiver, props) {
  var onInput = loginWindow$lambda$onInput;
  var onLoginButtonClicked = loginWindow$lambda$onLoginButtonClicked(props); //function
  var $receiver_0_1 = new RDOMBuilder_init(input$lambda_0(null, null, null, null, 'nickNameInput')); //Input element
  set_onInputFunction($receiver_0_1.attrs, onInput());
  set_onKeyUpFunction($receiver_0_1.attrs, loginWindow$lambda$lambda$lambda$lambda(onLoginButtonClicked));
  var $receiver_0_2 = new RDOMBuilder_init(button$lambda_0(null, null, null, 'loginButton')); //Button element
  $receiver_0_2.unaryPlus_pdl1vz$('Login');
  set_onClickFunction($receiver_0_2.attrs, onLoginButtonClicked());
  return Unit;
}
Which browser do you use?
@turansky, firefox 78
t
Possibly it use another
key
for
Enter
enter
for example
f
@turansky, When i hit the
Enter
key Browser detect it correctly, Validation is successful and get inside
IF
conditional but fails when call
onLoginButtonClicked()
. I tried it without
IF
but it still fails.
It only happens in 
onkeyupfunction()
 with 
onClickFunction()
 works.
[Solved] Sry, I've found my mistake.
In
onLoginButtonClicked()
was returning (Event) -> Unit
👍 1
t
Is
undefined
required?
f
I'm not developer in Javascript. @turansky, I don't understand you with
undefined
required. I don't get the context.