页面重新加载上的jquery onchange事件不起作用

页面重新加载上的jquery onchange事件不起作用,jquery,Jquery,我正在使用jquery根据所选的下拉列表禁用其他下拉列表。 下面是代码 <script type="text/javascript" > jQuery(function() { jQuery('select').change(function() { if(jQuery(this).val() == "A"){ jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))

我正在使用jquery根据所选的下拉列表禁用其他下拉列表。 下面是代码

<script type="text/javascript" >
jQuery(function() {
 jQuery('select').change(function() {
  if(jQuery(this).val() == "A"){
   jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
          .attr('disabled','disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
         .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
         .removeAttr('disabled');
  } else if(jQuery(this).val() == "R"){
   jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
        .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
         .attr('disabled','disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
        .attr('disabled','disabled');
  }else{
   jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
       .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
       .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
      .removeAttr('disabled');
  }
 })
})
</script>

jQuery(函数(){
jQuery('select').change(函数(){
if(jQuery(this).val()=“A”){
jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
.attr('disabled','disabled');
jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
.removeAttr(“禁用”);
jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
.removeAttr(“禁用”);
}else if(jQuery(this).val()=“R”){
jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
.removeAttr(“禁用”);
jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
.attr('disabled','disabled');
jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
.attr('disabled','disabled');
}否则{
jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
.removeAttr(“禁用”);
jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
.removeAttr(“禁用”);
jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
.removeAttr(“禁用”);
}
})
})
因此,页面重新加载后,禁用的字段将再次启用,但选择将禁用这些字段

请帮忙

谢谢
Sanket

您还应将您的条件写入页面加载函数,以获得页面刷新的效果:

  $(document).on("pageload",function(){
      //add here logic related to get currently selected value from dropdown and make 
     other tags disable as per your requirement
  });

如果您遇到任何问题,请告诉我。

在页面加载时,您需要检查下拉列表的值,就像更改下拉列表时一样

这是因为,尽管服务器端代码会保留下拉列表的选定值,但不会保留在客户端设置的控件的禁用状态。网页本质上是无状态的,任何没有显式保存的更改都将在刷新页面时被销毁

您可以轻松地重复使用现有代码来执行此操作:

jQuery(function() {
 setEnabledDisabled(jQuery('select').val()); //runs at page load

 jQuery('select').change(function() {
   setEnabledDisabled(jQuery(this).val());
 });

 //re-usable function to implement the logic
 function setEnabledDisabled(val);
  if(val == "A"){
   jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
          .attr('disabled','disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
         .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
         .removeAttr('disabled');
  } else if(val == "R"){
   jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
        .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
         .attr('disabled','disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
        .attr('disabled','disabled');
  }else{
   jQuery(document.getElementById('dataForm:listView:filterId:field10value1'))
       .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field4value1'))
       .removeAttr('disabled');
   jQuery(document.getElementById('dataForm:listView:filterId:field6value1'))
      .removeAttr('disabled');
  }
 }
});

另外,作为补充说明,我强烈建议升级您的jQuery版本-在撰写本文时,1.3已经超过8年(2009年发布)。从那时起,已经有了许多错误修复和增强,以及支持更新浏览器和功能的更改,您可能希望利用这些更改。1.12.4是1.x分支的最新版本,于2016年5月发布。如果您不再需要支持旧版本的IE,您可以转到2.x分支,这将减少下载量,但不会引入兼容性问题。3.x进行了一些突破性的更改,需要进行更彻底的测试。

执行此操作-在Pageload上,即在Document Ready上,将使用默认的选择调用函数run_your_rules($val)

$(document).ready(function(){
  var $this = $('select');
  var $val=$this.val();
  run_your_rules($val);

  $this.on('change',function(e) {
        run_your_rules($(this).val());
  });

  function run_your_rules($val){
    if($val==="A"){
        console.log("disable A");
    }else if($val==="B"){
        console.log("disable B");
    }
  }

})

你介意编辑你的帖子,这样水平滚动条就会消失吗?这样好吗now@reporter你觉得这样看起来好多了吗?你试过
$('select').val('Default value')).trigger('change')加载文档后?它基本上会做什么…您能提供一个示例或一些链接吗