簡體   English   中英

jQuery .attr()將值設置為未定義,為什么?

[英]Jquery .attr() sets value as undefined, why?

<div class="form-group">
                    <label>Email Visible (Fill other means of contact to change)</label>
                    <select id="emailVisible" required name="emailVisible" class="form-control" disabled="disabled">
                        <option value="yes" selected = "selected">Yes</option>
                        <option value="no">No</option>
                    </select>
                </div>

setInterval(function(){
            console.log("GOOO");
            if ($("#twitterInput").val() == "" && $("#facebookInput").val() == "" && $("#steamInput").val() == "") {
                console.log("1");
                $("#emailVisible").attr("disabled","disabled");
            } else {
                console.log("2");
                $("#emailVisible").attr("disabled",false);
                console.log($('#emailVisible').attr('disabled'));
            }                   
        }, 1000);

“ console.log($('#emailVisible')。attr('disabled'));” 打印在控制台中未定義。

每秒打印“ 2”。

我不知道我的語法不正確。

嘗試使用prop()而不是attr() 。並使用布爾類型而不是string更改值,並且不要忘記添加3個輸入

 setInterval(function() { if ($("#twitterInput").val() == "" && $("#facebookInput").val() == "" && $("#steamInput").val() == "") { console.log("1"); $("#emailVisible").prop("disabled", true); } else { console.log("2"); $("#emailVisible").prop("disabled", false); console.log($('#emailVisible').prop('disabled')); } }, 1000); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="form-group"> <input id="twitterInput"> <input id="facebookInput"> <input id="steamInput"> <label>Email Visible (Fill other means of contact to change)</label> <select id="emailVisible" required name="emailVisible" class="form-control" disabled="disabled"> <option value="yes" selected = "selected">Yes</option> <option value="no">No</option> </select> </div> 

您可以觀察到,當執行jquery時, <select>沒有id="emailVisible disabled屬性。

 $("#emailVisible").attr("disabled",false);

這是因為它刪除了此屬性以啟用選擇框。 這就是為什么當您訪問$('#emailVisible').attr('disabled')它是undefined因為沒有這樣的屬性。 您可以通過使用此選擇框上的inspect element來驗證自己。

 setInterval(function(){ console.log("GOOO"); if ($("#twitterInput").val() == "" && $("#facebookInput").val() == "" && $("#steamInput").val() == "") { console.log("1"); $("#emailVisible").prop("disabled","disabled"); } else { console.log("2"); $("#emailVisible").prop("disabled",false); console.log($('#emailVisible').prop('disabled')); } }, 1000); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="form-group"> <label>Email Visible (Fill other means of contact to change)</label> <select id="emailVisible" required name="emailVisible" class="form-control" disabled="disabled"> <option value="yes" selected = "selected">Yes</option> <option value="no">No</option> </select> </div> 

只需將attr更改為prop即可,因為disable是一個屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM