2

我有一个webpart,它有下拉列表和gridview,我在下拉列表和gridview周围使用updatepanel ..在gridview中,我有一个文本框作为日期选择器..当我进入该页面并单击文本框时,日期选择器出现,但只要我更改下拉列表中的项目,触发回发日期选择器永远不会回来。

这是我正在使用的 jquery 代码,如果我更改此代码更新面板根本不起作用。

<script type="text/javascript">
     var $ = jQuery.noConflict();
     $(function () {
         $('input[id*="txtftrNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtftrQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
         $('input[id*="txtQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });

     });

</script>
4

3 回答 3

2

一旦更新面板执行异步回发,它就会擦除所有内容。你需要重新绑定

<script type="text/javascript">    

$(function () {
     BindEvents();
 }); 


function BindEvents() {

           var $ = jQuery.noConflict();

             $('input[id*="txtftrNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
             $('input[id*="txtNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
             $('input[id*="txtftrQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
             $('input[id*="txtQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
        }
</script>

并在您的更新面板中再次像这样重新加载 jquery 事件

 <asp:UpdatePanel>
      <ContentTemplate
           <script type="text/javascript">
                          Sys.Application.add_load(BindEvents);
           </script>

           <!-- your stuff in the update panel -->
      </ContentTemplate>
    </asp:UpdatePanel>
于 2012-12-06T20:56:56.760 回答
0

这应该有效。

var $ = jQuery.noConflict();
$(document).ready(function(){
   BindEventHandler();
});
$.ajaxStop(function(){
   BindEventHandler();
});

function BindEventHandler(){
$('input[id*="txtftrNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtftrQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
         $('input[id*="txtQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
}
于 2012-12-06T20:44:41.517 回答
0

试试这个方法

$(function(){
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(BindEventHandler);
     BindEventHandler();
});
于 2012-12-06T20:53:33.163 回答