jquery
  • checkbox
  • attr
  • 2017-08-17 241 views 0 likes 
    0

    我試圖禁止使用jQuery禁用複選框的jQuery

    增加一個新的課程來指示如果學生爲了填補已經反覆過程中的複選框是動態創建的GPA計算器應用程序複選框元素他以前在這等級:

    if(hourSum < 21){ 
         $("<div class='course'>" 
             + "<div class='tdnum'>" 
             + "<span class='subNum' id='subNum" + i + "'>" + i + " </span>" 
             + "</div>" 
             + "<div class='tdgrade'>" 
             + "<span class='requiredMsg' id='markReq" + i + "'>*</span>" 
             + "<input type='number' class='mark'>" 
             + "<span class='errorMessage' id='markError" + i + "'>* between 35 - 100</span>" 
             + "</div>" 
             + "<div class='tdhour'>" 
             + "<span class='requiredMsg' id='shourReq" + i + "'>*</span>" 
             + "<input type='number' class='shour'>" 
             + "<span class='errorMessage' id='shourError" + i + "'>* between 1 - 3</span>" 
             + "</div>" 
             + "<div class='tdrep'>" 
             + "<input id='subState" + i + "' class='repSub' type='checkbox'>" 
             + "</div>" 
             + "<div class='tdpgrade'>" 
             + "<input type='number' class='rmark' id='rmark" + i + "' disabled>" 
             + "<span class='errorMessage' id='rmarkError" + i + "'>* between 35 - 100</span>" 
             + "</div>" 
             + "<div class='tddelete'>" 
             + "<span class='remove'><img src='img/delete.png'></span>" 
             + "</div>" 
            + "</div>").appendTo(".ctable").hide().fadeIn(300); // add fade effect on adding elements   
          i++; 
        } 
    

    我需要禁用.repSub類此複選框時傳遞小時數= 0,整體平均= 0

    "<input id='subState" + i + "' class='repSub' type='checkbox'>" 
    

    這個方法我試過:

    $(".repSub").prop("disabled", true); 
    

    也是我想:

    $(".repSub").attr("disabled", 'disabled'); 
    

    但是這兩種方法都沒有工作在動態創建的複選框

    是有這個問題的任何解決方案的工作?

    +0

    你在哪裏和什麼時候使用上述方法/ – Satpal

    +0

    你在哪裏放這一行:'$(「。repSub」)。prop(「disabled」,true);'?它應該在追加html之後。 –

    +2

    爲什麼不在追加元素時添加禁用功能? –

    回答

    1

    使用一個回調函數來執行代碼實際上元素是動態DOM的,這就是爲什麼當你添加
    $(「repSub‘)的代碼不工作負載託(’已禁用」,真)。 或 $(「。repSub」)。attr(「disabled」,'disabled');

    下面是示例代碼我寫到這裏, 只是做出一些改變在這裏

    "+ </div>)".appendTo(".ctable").hide().fadeIn(300,function(){ 
    $(".repSub").prop("disabled", true); 
    }); 
    

    我只是用淡入回調函數,所以它會在ELEM之後八方通工作淡入

    如果請通知我這是工作與否

    如果它不工作,你可以使用Promise()或done()方法做這些東西 這裏是範例

    var str = "<div id='xx'>Some content</div>"; 
    $(str).appendTo("#qo").promise().done(function(){ 
    $("#xx").html("Change the content"); 
    $("#xx").prop("disabled", true); 
    }); 
    

    「qo」是一個div id,並且我將#xx div動態添加,然後在加載內容之後,我更改了一些內容並禁用了該元素。

    請評論。

    +0

    非常感謝。第二種方式'.promise()。done()'方法爲我工作。 我添加了我的解決方案的問題。 – Oghli

    0

    我發現罰款解決問題的方法測試比方式

    僅這是爲我工作的方式更後Ankur Das方法,他在他的回答中提到

    我以前.promise().done(function(){})方法與回調函數附加後被動態地添加的元素:

    +"</div>").appendTo(".ctable").hide().fadeIn(300).promise().done(function(){ 
            hour = Number($("#hrs").val()); 
            avg = Number($("#avg").val()); 
            if (hour === 0 && avg === 0) { 
            $(".repSub").prop("disabled", true); 
            } 
            else { 
            $(".repSub").prop("disabled", false); 
            } 
          }); 
    

    了問題解現場演示: https://jsfiddle.net/e9ubveL2/10/

    相關問題