我想要革命想要解脫——bootstrap常見問題及解決方式


  最近一個月,恍若隔世,天天加班,昨晚終於發版了,今天才喘一口氣。有時候,即便你工作效率再怎么高,擼碼再怎么快也無可避免的會加班。不信的話,可以先給你定一個交付時間,然后不斷的給你加需求,就讓你一個人做,偶爾再給你來幾下變更,看你怎么死?本來做項目,需求、資源、時間就是一個鐵三角,一旦你強行要打破這個平衡,那么注定就是杯具了.........而在天朝,很多時候,是需求還沒定,先給你定時間,然后資源基本上也是定的,又不願在需求上做減法,甚至還做加法,結果就呵呵了......領導層只看結果,不管你過程,那么程序員面對這樣的情形,也有自己的反抗方式:我偷工減料還不行么?可是出來混,總是要還的,然后就是一個惡性循環...........

  劉德華的《練習》可以形容我本月的狀態:“我已開始加班,開始天天加班,人快猝死在電腦旁,試着刪除數據庫再跑路,那些曾經准點下班的美好和回憶.....”。

  用《圓月彎刀》的話說:“有些人,縱然天天擼碼,也永遠無法成為碼中之神........”。

  感覺全棧程序員的杯具就是項目全是你一個人做!美工、前端、接口、數據庫、移動app、部署、運維、售后........

  我已經不想再做程序猿,因為太苦逼,在還沒有想好接下來做啥之前,我會一直苦逼下去.......

  吐槽完畢,繼續記錄和分享。

bootstrapValidator動態加載數據的下拉框必填驗證失效

有那種數據是動態獲取的下拉列表類似的,如select,

兩處要修改,一處是:excluded: [':disabled']

 $('form').bootstrapValidator({
                message: 'This value is not valid',
                feedbackIcons: {
                    valid: 'glyphicon glyphicon-ok',
                    invalid: 'glyphicon glyphicon-remove',
                    validating: 'glyphicon glyphicon-refresh'
                },
                excluded: [':disabled'],

另一處是在字段上添加觸發條件:trigger: "change",

 ORG_CODE: {
                        trigger: "change",
                        validators: {
                            notEmpty: {
                                message: '所屬項目不能為空'
                            }
                        }
                    },

對於隱藏字段賦值后,沒有觸發驗證的問題,可以在后面添加change()方法,如下:

 $('#' + _equipmentTree.setting.name).val(sid.trim(',')).change();

bootstrap-select組件搜索無效

組件初始化代碼:$('#BuildList').selectpicker({});

當select中的數據是動態加載的時候,當數據加載完之后要記得添加如下代碼:

 $("#BuildList").selectpicker('refresh');

 jQuery判斷checkbox是否選中的方法

方法一:
if
($("#checkbox-id").get(0).checked) { // do something } 方法二: if($('#checkbox-id').is(':checked')) { // do something } 方法三: if ($('#checkbox-id').attr('checked')) { // do something }

ztree全選反選

var zTree = $.fn.zTree.getZTreeObj("zt_EQUIPMENT_IDs");
        zTree.checkAllNodes(isChecked);

isChecked為true是全選,false為反選。

使用jquery控制div的顯示與隱藏

使用jquery控制div的顯示與隱藏,一句話就能搞定,例如:

1.$("#id").show()表示為display:block,

   $("#id").hide()表示為display:none;

2.$("#id").toggle()切換元素的可見狀態。如果元素是可見的,切換為隱藏的;如果元素是隱藏的,則切換為可見的。

3.$("#id").css('display','none');//隱藏

   $("#id").css('display','block');//顯示

   或者

   $("#id")[0].style.display='none';

  display=none 控制對象的隱藏
  display=block控制對象的顯示

4.$("#id").css('visibility','hidden');//元素隱藏

   $("#id").css('visibility','visible');//元素顯示

CSS visibility 屬性規定元素是否可見。
visible 元素可見。 
hidden 元素不可見。 
collapse 在表格元素中使用時,此值可刪除一行或一列,但它不影響表格的布局。被行或列占據的空間會留給其他內容使用。如果此值被用在其他的元素上,會呈現為 "hidden"。 
inherit 從父元素繼承 visibility 屬性的值。

bootstrap表頭縮在一起

當bootstrap用在tab中或者是用在remote加載的一個新界面中的時候,有時候會出現表頭自動縮在一起的問題。例如:

調用代碼如下:

 $('#defaultModal').modal({ show: true, backdrop: 'static', remote: obj.detailUrl + "?equipid=" + encodeURIComponent(equipid) + "&&no=" + billNo + "&&state=" + state + "&&MenuId=" + $("#hidfMenuId").val() });

解決方式,添加如下代碼:

    $("#defaultModal").on("shown.bs.modal", function () {
        $.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();
    });

雖然解決了表頭縮在一起的問題,但是還會存在表頭閃一下的問題,這是因為在自動計算表頭的寬高。

其它方案:在datatable初始化完成之后,設置表頭的寬度。(前提:指定每一列的寬度)

        setTimeout(function () {
            var _table = $("#table_maintainTemplate_select_wrapper .dataTables_scrollHeadInner table");
            alert(_table.width())
            if (200 < _table.width() < 500) {
                $("#table_maintainTemplate_select_wrapper .dataTables_scrollHeadInner table").width(566);
            }
        }, 300);

取不到input的value值

 有時候,我們會發現html中value中明明有值了,但是通過js獲取不到的情況。如:通過ajax動態加載的界面。

解決方式:

為text添加onchange事件

<input id="txtCode" type="text" class="form-control input-inline" onchange="changeValue(this)">

js代碼如下:

    var _txtCode;
    function changeValue(obj) {
        $(obj).attr("value", $(obj).val());
        _txtCode = $(obj).val();
    }

..................

bootstrap模態框內容只加載一次

解決辦法:在js加上以下代碼

 $('#addOrEditDialog').on("hidden.bs.modal", function() {
           $(this).removeData("bs.modal");
           $(".modal-content").children().remove();
});

bootstrap多層modal彈窗同時關閉的解決辦法

bootstrap多層modal彈窗時。當子窗口關閉時,所有父窗口一起關閉。
原因是bootstrap在窗口關閉事件委托時,委托給所有窗口。
如源碼:
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
改進為

    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]:first', $.proxy(this.hide, this))
    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]:last', $.proxy(this.hide, this))

注意:此方法僅對頂部關閉按鈕有效,底部關閉按鈕無效。

bootstrap刷新時停留在當前頁

var table = $('#example').DataTable();
// Sort by column 1 and then re-draw
table.draw( false );

這個找了很久


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM