皆用JQuery來解決,在這裡記錄一下解法
1.動態調整欄寬 :
有一個table,他的第一個欄位長度是固定的,後面的欄位要有相等的寬度,
但是後面的欄位數目是動態產生,欄位的名稱長度也不固定,如果欄位過長則必須要換行
一開始是用%數的方法來指定欄寬長度,但是這個方法並不能夠有效的在所有瀏覽器上運行
後來使用jquery來動態調整欄寬 : 先等table產生,再計算出後面欄位的平均寬度,並將儲存格寬度調整為平均寬度:
$('.sort').each(function() { var sum = 0; //取得所有要調整的欄寬 var cells = $(this).find('.sort-item'); //統計總寬度 cells.each(function() { sum += $(this).width(); }); //設定平均欄寬 var cellWidth = sum / cells.length; cells.each(function() { $(this).width(cellWidth); }); });
2.限制checkbox選取
有一個多選的CheckboxList,需要限制最大的選取數量
如果超過則不能選擇:
//傳入CheckboxList Container的ID bindMultiSelectLimit = function(id,limit) { $('#' + id + ' input:checkbox').click(function() { //使用Jquery selector直接找出所有已選之Checkbox if ($('#' + id + ' input:checked').length > limit) { return false; } }); };
3.限制排序問題重覆選取
有一個問卷題型叫排序題,結構上是由許多RadioButtonGroup所構成,
讓使用者能排列喜好選項的順序 : (ex, 有三個選項, 可以選擇 3,2,1 或 1,2,3的排序 )
但使用者希望能夠有防呆機制,讓已經於其他選項選過的排序不能再選第二次
(ex:三個選項的排序可為 1,2,3. 3,2,1 . 但不可為 2,2,1 )
後來選擇了一個比較簡單的作法:當排序被選取時,清空其他有同樣排序值的RadioButton
//傳入ContainerID bindSortRules = function(id) { $('#' + id + ' input').click(function() { //設定每個排序RadioButton有同樣的value,將其他有相同value的值都設為false $('#' + id + ' input[value=' + $(this).val() + ']').attr('checked', false); //設定目前選擇的值 $(this).attr('checked', true); }); }
以上的需求如果使用Javascript不知道要做多久...
所以說JQuery真的是能夠有效增加前端生產力的一個好框架啊,
只要有用到Web的開發者真的都需要接觸一下
No comments:
Post a Comment