keypress event does not work in knockout js

1.5k Views Asked by At

When i press key, then i can not go to debugger into method CheckConfirmPassword, what was the problem.Thank you

html Code:

<div class="zseparatornext" data-bind="with: OrganiserObservable">
<div class="control-group">
            <label class="control-label" for="ConfirmPassword">Confirm Password</label>
            <div class="controls">
                <input id="ConfirmPassword" name="ConfirmPassword" class="input-large" type="password" data-bind="value: $parent.confirmPassword, valueUpdate: 'afterkeydown', event: { keypress: $parent.CheckConfirmPassword }">
                <span data-bind="text: PasswordMatch" />
            </div>
        </div>
 </div>

View Model Code:

var CheckConfirmPassword = function (data, event) {
        alert("developping....");
    };
2

There are 2 best solutions below

0
Tomalak On BEST ANSWER

You don't need to use the event binding here.

Your confirmPassword observable is already being updated after keydown (in other words: instantly), just base a computed on it.

HTML

<input … data-bind="value: $parent.confirmPassword, valueUpdate: 'afterkeydown'">
<span data-bind="text: passwordsMatch" />

Model

function Model() {
    this.password = ko.observable();
    this.confirmPassword = ko.observable();
    this.passwordsMatch = ko.computed(function () {
        return this.password() === this.confirmPassword();
    }, this);
}

passwordsMatch will be true in the instant the passwords are equal.

0
Shohel On

use keyup instead of keypress, now it will be work.