views:

427

answers:

7

I am currently working on a web app that will replace old systems in some office. (very old as in they are in FoxPro)

My current task is to develop a very desktop-like fast UI, meaning like, trying not to use the mouse at all, so they can capture data fairly quickly and they do it almost without even looking.

They expect things like:

Using the arrow keys to navigate, jumping to the next field when they are done filling the current one, pressing enter at one field and one list with data come up for them to choose (using arrow keys to navigate again), etc.

I can get this done with javascript fairly easy, but since I was asked to help with this project because the time frame to get it done is very short,

What libraries, controls, or similar tools can help me to do this quickly?

+4  A: 

Use JQuery... And forget about cross browser DOM handling. JQuery has great support in VS.Net.

Software Enthusiastic
A: 

I recommend Dojo -- I realize it's not QUITE as popular as JQuery (number of hits on Google: dojo 13 millions, jquery 13.4) -- but it IS better architected and designed!

Alex Martelli
Why ?
eyelidlessness
Alex did say because it is "better architected and designed" ! :P
Cerebrus
why?? it may be a bit faster (benchmarked with slickspeed), but in IE8 it doesnt really work. The Version used by slickspeed (1.1.1) only throws errors on IE8. The current version still has several bugs in IE8. JQuery works fine.
Gushiken
A: 

Many old FoxPro apps were optimized for user productivity. I don't think I've seen "user productivity" used as a software tool evaluation parameter for a long time. Especially not for browser-based applications.

First you'll need some way to measure. Keystrokes per minute and forms processed per minute used to be pretty common ways to do that. But throwing AJAX into it is going to slow it up - javascript is just not a high-speed-execution language at this point. even with chrome.

your best bets are probably flex and silverlight.

le dorfier
Is not like its a measurement, the users should feel that the app wont slow them down. Thats it. And using the mouse a lot will surely make them NOT want to use the app.
Francisco Soto
That's true about mice. That's why I wrote what I did. Both Silverlight and Flex have excellent keystroke handling, much better and more consistent than a browser, and they run a lot faster than javascript.
le dorfier
+1  A: 

You haven't mentioned the kind of browser support you require. This web app sounds like it will need to catch and handle quite a few keyboard events.

Different browsers handle events differently. So, you will need to keep that in mind.

Yes, it is relatively straightforward to roll your own Key handling Javascript, but it is definitely better to use a free public framework like JQuery, Prototype or Dojo. Rather than suggesting one over the other (the SO community seems to have a special soft corner for JQuery, trust me on this!), I would say, check them all out and decide on your own.

You may also want to look into pre-built(commercial or otherwise) custom controls that provide the kind of application functionality you need. For instance, if you require a spreadsheet kind of data entry interface, many controls are available on the web.

Cerebrus
Firefox and IE, and maybe I could even take Firefox out of the equation. (I don't like it but the people using this software won't understand that.)I will use jQuery, I am fond of that framework too.
Francisco Soto
A: 

Teach them how to use tab and shift-tab to go back. Enter is for "enter"ing information, not "next". Just be really cognisent of tab indexes in your forms and it should flow nicely for your users

Bring them an interface that brings them into the present instead of jury-rigging a system that takes all those horrible conventions from DOS and text based systems into a web based one.

Aaron
That's the same as not testing your websites on IE6 and telling users to update their browsers to the present..You simply can't tell users to change their behaviour just because they're used to something old.
Thomas Stock
+3  A: 

To help you save some minutes, here's code for the "next field on pressing enter": (You need JQuery tho)

$.fn.focusNextInputField = function() {
    return this.each(function() {
       var fields = $(this).parents('form:eq(0),body').find('button,input,textarea,select');
       var index = fields.index(this);
       if (index > -1 && (index + 1) < fields.length) {
          this.blur();
          fields.eq(index + 1).focus();
       }
       return false;
    });
};


$("button,input,textarea,select").keydown(function(event) {
    switch (event.keyCode) {
        case 13: $(this).focusNextInputField();
            break;
    }
});
Thomas Stock
+1  A: 

Are you familiar with ExtJS (http://extjs.com/)?

I think that is a real web application framework. JQuery is more like a 'library' with a lot of (very nice) functions.

Grad van Horck