Skip to main content

MVC3 Unobtrusive Validation, Bootstrap, and You

I _really_ like Twitter's Bootstrap.  It saves me from making any number of questionable content design choices.  I'm using it in an MVC3 project and one of the things that bugged me was the inability to get Microsoft's unobtrusive validation working with the fancy form control states in Bootstrap.

Well, after looking around on StackOverflow and poking and prodding MVC, here's what I've got:
If you correct the error, the state changes away from error and you get this:
I hacked this into place by inserting a shim error placement function.  It saves a handle to the original Microsoft implementation, changes the class on the nearest div with a CSS class of "control-group" and then calls the Microsoft implementation to display the actual error text.

$(document).ready(function () {
            var esettings = $.data($('form')[0], 'validator').settings;
            // Get a handle to the original errorPlacement function
            var originalFunction = esettings.errorPlacement;
            esettings.errorPlacement = function (error, inputElement) {
                // Although you have access to the form via $(this),
                // getElementById should be efficient
                // NOTE:  This assumes that the name and id properties are the same
                var id = "#" + inputElement[0].name;
                var controlGroup = $(id).closest("div.control-group");
                // error[0].innerHTML contains the validation error message
                if (0 == error[0].innerHTML.length) {
                    controlGroup.removeClass("error").addClass("success");
                } else {
                    controlGroup.removeClass("success").addClass("error");
                }
                // Call the original function
                originalFunction(error, inputElement);
            }
        });
 There's probably a much smarter way to do this, but this works well enough for now.

Comments

Popular posts from this blog

I guess Python isn't so bad after all...

Not wanting to hassle with learning OpenCV and fighting with an edit-compile-execute environment, I decided to use my OpenCV project as an excuse to play around with Python.

I'm still a serious beginner, but I'm beginning to understand why it gets the use it does.

Anyhow, it only took a couple of days to integrate Tesseract OCR, PIL, and OpenCV such that I could open multi-frame TIFF images, perform some basic feature detection, and then use the output of feature detection to focus on a specific region for OCR.

I will admit to having a few false starts.  The first was that I used an older (C++) tutorial that was using some deprecated features of OpenCV and ignoring some other features.  For example, the tutorial was using Hough Line detection to find squares on a printed page.  In order to get to that point there was thresholding, dilating, eroding, inversion, flood filling and so on.  Even then I wasn't getting the correct results.

When I started over, I was using the old…

Getting closer

Discovered that the "toucan" config is distinct from the "austin" config and so can dump a bunch of
drivers.

Unfortunately it looks like I have to merge the Dell board config (board-qsd8x50_austin.c) with the latest generic board config from CodeAurora (board-qsd8x50.c).

Here's where I'm at so far:

corey@patches:~/msm$ git status # On branch gingerbread_rel # Changed but not updated: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: arch/arm/mach-msm/Kconfig # modified: arch/arm/mach-msm/Makefile # modified: arch/arm/mach-msm/include/mach/board.h # modified: arch/arm/mach-msm/include/mach/camera.h # modified: drivers/input/keyboard/Kconfig # modified: drivers/input/keyboard/Makefile # modified: drivers/input/misc/Makefile # modified: drivers/input/touchscreen/Kconfig # modified: drivers/input/touchscreen/Makefile # modified: dr…

Initial Speech Recognition App

I'm pretty impressed with Microsoft's System.Speech API.  It took less than 3 days to throw together a proof-of-concept application.  The hardest part was probably coming up with the grammar -- documentation for that is pretty thin on the ground.

Anyways, here's the application source code on GitHub if anyone wants a look:
ObserverLengthSampler project

If nothing else, I'd recommend it as a starting point for someone needing a number recognition SRGS grammar in an XML format.