jQuery: Disabled and ReadOnly Inputs

Posted by Jetlogs @ 12:22 am
Category: Web Development, jQuery

Ever wonder how to disable another input element through the use of another control? Here is a simple tutorial on how to toggle the disabled attribute of an input element.

For the first demo, we will toggle an input’s disabled status through the use of another control. For this example, we will give our target input an id of target, while our control, in this case a link, we will give it an id of control:

Target text field: <input type="text" id="target" /><br />
<a href="#" id="control" />Disable target</a>

Now to toggle the target’s disabled status, it is actually quite simple in jQuery. Using the .attr() attribute we can disable the target. Then using the .removeAttr(), we can remove the disabled status. Here is how the javascript code would look like:

$("#control").toggle(
function ()
{
	$('#target').attr("disabled", true);
},
function ()
{
	$('#target').removeAttr("disabled");
});

Here is a demo on how to toggle the disabled status of an input:

Target text field:
Disable target

Although the first method is handy, there are times when we really don’t need a control input. What if we want to enable an input textbox just by clicking on it? Unfortunately, when an input element is disabled, it would no longer register events such as focus or click. The good news is that there is an alternative. Instead of using the disabled attribute, we use the readonly attribute instead. Here is a sample javascript code on making a readonly input enabled using its click event:

$('#readonly').click(
function()
{
	if ($('#readonly').attr("readonly") == true)
	{
		$('#readonly').val('');
		$('#readonly').removeAttr("readonly");
	}
});

Here is the demo of how to change the readonly attribute

This text field will no longer be read-only upon clicking:

If you want to download the source code for this tutorial,
just click on the link below:

Download Source Code


11 Comments »

11 Comments to “jQuery: Disabled and ReadOnly Inputs”

  1. RaMa-NoOb
    1

    wow, are you reading my mind? was gonna ask you about this a few days ago :)) cheers man! you’re my fountain of knowledge hahaha

  2. Paras Jain
    2

    This was of great help. Thank you.

  3. Mike
    3

    Readonly still sends the value in the forms collection during request, though. Disabled does not…these could be important distinctions for server-side code handling.

  4. Jetlogs
    4
    Author Comment

    @Mike: Yes, disabled fields don’t get sent to the back-end while readonly fields do. So it is very important to know which you would use depending on the situation.

  5. prasasti
    5

    jetlogs. Tanks.4 u help.

  6. yAnTar
    6

    $(’#target’).attr(”disabled”, true); = $(’#target’).disable();
    $(’#target’).removeAttr(”disabled”); = $(’#target’).disable(false);

  7. yAnTar
    7

    Sorry, and this function

    $.fn.disable = function() {
    return this.each(function() {
    if(typeof this.disabled != “undefined”) this.disabled = true;
    });
    }

  8. Mike Rundle
    8

    Thanks for posting this! I was trying to flip the disabled attribute to “false” but that wasn’t doing anything (like I suspected it wouldn’t!) What a great and simple solution to just remove it. Duh! Thanks so much!

  9. Alexandre Broggio
    9

    Help much worth the post

  10. Mark
    10

    This doesn’t seem to work in IE 8. Thoughts? I’m new to JS/jQuery

  11. Mark
    11

    Nevermind, IE 8 doesn’t give visual cues to a disabled field.

RSS Comment Feed Comments RSS |trackback TrackBack URI

Leave a comment

  • Archives

  • Donations

  • Social Bookmarks

  • Jetlogs.org
    Some Rights Reserved 2007
    Creative Commons License