2012-02-16 42 views
0

我在使用Telerik網格的MVC3中有一個頁面。在網格中,對於每一行,都是一個輸入小數點的文本框。我有一個css類'HoursNew',它用於連接一個jQuery插件(autoNumeric.js)。我也有一個onBlur函數來將任何十進制輸入舍入到最接近的小數點。 問題是,在對一列進行排序後,所有JavaScript似乎都停止工作。 autoNumeric.js停止與我在blur上觸發的函數一起工作。Telerik MVC Grid - 排序停止javascript

$(document).ready(function() { 
    $('.HoursNew').autoNumeric({ pSign: 's', vMin: '-999.5', vMax: '999.5', mRound: 'C', aPad: false }); 
    $('.HoursNew').blur(function() { roundToHalf(this); }); 
}); 

      // Round decimal to nearest .5 
      // v is input object 
      function roundToHalf(v) { 
       var value = v.value; 
       var r; 
       //alert(v.id); 
       var converted = parseFloat(value); // Make sure we have a number 
       var decimal = (converted - parseInt(converted, 10)); // Pull the decimal value 
       decimal = Math.round(decimal * 10); 
       if (decimal == 5) { return (parseInt(converted, 10) + 0.5); } // leave alone if .5 
       if ((decimal < 3) || (decimal > 7)) { 
        r = Math.round(converted); // Round up or down to nearest whole number 
       } else { 
        r = (parseInt(converted, 10) + 0.5); //round to .5 
       } 
       //alert(r); 
       // reset input value to new value 
       $('#' + v.id).val(r); 
      } 

頁面在第一次加載時工作正常,排序後只是這個問題。有什麼建議麼?

回答

1

我有一個預感,當排序時,網格正在進行一個ajax調用,呈現一個新的網格。這意味着您在$(document).ready中執行的任何綁定都將被刪除。

Telerik documentation的客戶端事件中查看此頁面。你需要這部分添加到您的網格的定義:

.ClientEvents(events => events 
    .OnDataBound("onDataBound") 

這javascript來重新綁定:

function onDataBound(e) { 
    $('.HoursNew').autoNumeric({ pSign: 's', vMin: '-999.5', vMax: '999.5', mRound: 'C', aPad: false }); 
    $('.HoursNew').blur(function() { roundToHalf(this); }); 

} 
+0

差不多......我還需要增加整個腳本標籤在onDataBound。函數onDataBound(e){document} .ready(function(){('。HoursNew')。autoNumeric({pSign:'s',vMin:'-999.5',vMax:'999.5', mRound:'C',aPad:false}); $('。HoursNew')。blur(function(){roundToHalf(this);}); }); }' – Greg 2012-02-16 23:22:10

+1

...並感謝您的鏈接。現在很好用。 – Greg 2012-02-16 23:28:27