更改选择框后,禁用除1字段以外的所有表单字段

时间:2017-04-08 05:38:31

标签: jquery

如果用户更改了选择框的选项,我想要禁用表单内的所有字段而不触发选择框和一个id = xyz的特定输入字段。

我如何以快速和最简单的方式做到这一点。

"#newsite_IS_HELPER"是选择框的ID

$('#newsite_IS_HELPER').change(function(){
    alert('What i have to do?');
});

2 个答案:

答案 0 :(得分:1)

您可以选择表单下的所有输入元素,并排除您不想选择的内容,即this元素(在您的情况下触发禁用操作即select的元素)和输入元素#xyz

$('#your_form_id :input:not(#xyz):not(#newsite_IS_HELPER)').prop("disabled", true);

$('#newsite_IS_HELPER').change(function(){
    var this_val = $(this).val();
    var disable_all = false;
    if(this_val != "1"){
        disable_all = true;
    }
    $('#your_form_id :input:not(#xyz):not(#newsite_IS_HELPER)').prop("disabled", disable_all );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="your_form_id">
  <input id="xyz">
  <input><input><input><input><input>
  <select id="newsite_IS_HELPER">
  <option value="1">enable all</option><option value="2">disable all</option><option value="3">disable all again</option>
  </select>
</form>

答案 1 :(得分:0)

我该怎么做,

$ ('#newsite_IS_HELPER').change(function(){ 
   $("input").attr("disabled", "disabled");       
   $(this).attr("disabled",false);
   $("#xyz").attr("disabled",false);
 });

或者,你可以使用prop来代替attr,就像我的代码一样,

$("input").prop('disabled', true);