Q:

Is it a bad idea to trigger a database lookup on keyup (i.e. checking for unique username)

I have a field where a user can manually enter a code for a new product. It cannot be a db-generated ID as the user needs control over the code.
As this will require a round-trip to the server to check, my intention was to trigger this check as the "keyup" event happens (a bit like a live filter would work) so that there is instantaneous feedback about the entered code (and probably CSS-based colour/image reinforcement).  Admittedly for this particular function I may choose to do it onblur instead of keyup but there may well be other situations where I require a check on keyup.
Is this fundamentally a bad thing or not? A round-trip to the server to check if an item code exists (primary key) should be a very fast process but with a slow connection I'm just wondering if there could be a race condition whereby a fast typer stacks up the db calls faster than it can return and then a situation may emerge whereby a "submit" button is enabled when it shouldn't be.  Of course I would also back this up with db-level checking on submission of the form, but I'm trying to make this as apparently responsive as possible.
Is it generally a bad idea to do keyup checking on any data source that's not held in memory or is this an acceptable practise?

A:

Since you use knockout you can use throttle
ViewModel = function() {
    this.text = ko.observable().extend({ throttle: 500 });
    this.text.subscribe(this.onText, this);
};

ViewModel.prototype = {
    onText: function(value) {
        console.log("ajax call");
    }
};

http://jsfiddle.net/TT3AB/

