This plugin works on every page solo, and on every page but firefox 2 on a page with lots of jquery going on on it. With firefox 2, the double click event fires, but the keyups dont fire and the input does not focus, then select. This is really bugging me and i cannot figure it out.
(function($) { $.fn.EditInPlace = function (options) { // Invalid Element if (this.length == 0) { return false; }; // Edited Yet? var editedYet = 0; var beingEdited = 0; // Extendable Settings var settings = { url : null, name : null, id : null, type : 'input', needURL : 0, oldHTML : null }; // Allow Plugin Extension if (options) { jQuery.extend(settings, options); }; // The INPUT Container DIV var element = $(this); // Unbind all events attached to this element.unbind(); // Submit Element element.type = "button"; // Current Value unedited = element.html(); // Remove default input border element.css("border", "none"); // Edit on double click element.click(function() { // Grab the current input value val = element.html(); // Red Border element.css("border", "1px solid red"); // Replace with input if (beingEdited == 0) { element.html('<input type="text" value="' + val + '" />'); } beingEdited = 1; // Input Element inputElement = element.find("input"); // Focus element, then select text inputElement.focus(); inputElement.select(); }) // Stop Form $('form').submit(function(){ return false; }); // IsDefined? function isDefined(variable) { return (typeof(window[variable]) == "undefined")? false: true; } // Only onBlur if actively editing if (isDefined("inputElement")) { inputElement.blur(function() { if (settings.changed == 0) { cancel(); } }); } // Typing element.keyup(function(event) { // Keycode INT var keycode = event.which; // ESC if (keycode == 27) { cancel(); } // Enter else if (keycode == 13) { element.css("border", "none"); newVal = element.find("input").val(); element.find("input").remove(); element.html(newVal); beingEdited = 0; } return false; }); // Cancel function cancel() { element.css("border", "none"); newVal = element.find("input").val(); element.find("input").remove(); element.html(unedited); beingEdited = 0; } } }) (jQuery); // Attach events to our class :p $(document).ready(function() { $(".EditInPlace").EditInPlace(); });