Reputation: 794
I am trying to disable almost all input elements in a form using jquery, but I need some input elements to be enabled. For example:
$(document).ready(function () {
$("#document :input[name!='tloEnable']).attr("disabled", true);
});
This works great on the elements I have with the same name 'tloEnable'. However there are a few other elements that have different name attributes (filename, notifyUsers, notifyTeam). How can I include them too while disabling the remaining input elements?
$(document).ready(function () {
$("#document :input[name!='tloEnable], [name!='filename'], [name!='notifyUsers'], [name!='notifyTeam']).attr("disabled", true);
});
Upvotes: 4
Views: 14998
Reputation: 1
$('input').not('#company_email_1, #company_email_2, #company_email_3, #company_email_4').attr('disabled', true)
Upvotes: 0
Reputation: 16184
Salman A's solution is the one I would probably go with (assuming you can't just give the fields a classname) but you could also consider using jQuery's filter()
to only select elements that match your criteria.
Here we're just checking that name
does not exist in our list of fieldsNotToBeDisabled
but you could easily extend it to test for anything else.
var fieldsNotToBeDisabled = new Array("tloEnable", "filename", "notifyUsers", "notifyTeam");
$("form input").filter(function(index){
return fieldsNotToBeDisabled.indexOf($(this).attr("name"))<0;
}).prop("disabled", true);
input {border:1px solid green; }
input:disabled { border-color: red; background:#eee;}
<form>
<input name="tloEnable" />
<input name="filename" />
<input name="notifyUsers" />
<input name="notifyTeam" />
<input name="testa" />
<input name="testb" />
<input name="testc" />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Upvotes: 1
Reputation: 272006
Use the .not() function
and pass a selector; matched elements will be excluded:
$(document).ready(function () {
$(":input").not("[name=tloEnable], [name=filename], [name=notifyUsers]")
.prop("disabled", true);
});
The :not() selector
works the same way:
$(document).ready(function () {
$(":input:not([name=tloEnable], [name=filename], [name=notifyUsers])")
.prop("disabled", true);
});
Upvotes: 14
Reputation: 781
Give the inputs you wish to disable a class such as disabled-inputs
. Then simply:
Jquery 1.6:
$(".disabled-inputs").prop('disabled', true);
jQuery 1.5 and below:
$(".disabled-inputs").attr('disabled','disabled');
Upvotes: 4