簡體   English   中英

取消選中復選框時如何禁用PHP禁用和清除文本框。 選中/取消選中復選框,具體取決於數據庫

[英]How to disable anPHP disable and clear textbox when checkbox is unchecked. Check/uncheck checkbox depending on database

如果復選框未選中,我想禁用和清除文本框,然后在選中時啟用它。 同時,該復選框應取決於數據庫上的值。

  • 如果deductstatus == 1 ,則在加載時應選中此復選框
  • 如果deductstatus == 2 ,則在加載時應取消選中該復選框

下面的代碼不起作用。 有什么幫助嗎?

 $(".dedstat").click(function() { if ($(".dedstat").is(":checked")) { $(".deductto").removeAttr("disabled") } else { $(".deductto").attr("disabled", "disabled") var deductto = document.getElementById("deductto"); deductto.value = ""; } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="checkbox" name="dedstat" id="dedstat" value="<?php if ($dedstat == 1) echo 'checked'; ?>"> <input type="text" name="deductto" id="deductto" value="<?php echo $deductto;?>"> 

檢查的不是值,它是一個屬性,應該為:

<input type="checkbox" name="dedstat" id="dedstat" value="" <?php if ($dedstat == 1) echo 'checked'; ?>>

value屬性不能用於根據數據庫值將其保持checkedunchecked 並分別綁定選中或未選中屬性。 因此,請像這樣更改該標簽:

<input type="checkbox" name="dedstat" id="dedstat" onclick="isChecked()" value="1" <?php echo (isset($dedstat) && $dedstat == 1)? "checked" : "" ; ?>

關於此的更多信息,如果您想存儲1和2值以分別保存復選框的選中狀態和未選中狀態,那么您應該做的是,如果選中了復選框,則將在php $ _POST中獲取其值,但是如果如果未選中,則不會在$ _POST中得到它。 因此,在這種情況下,您應該將其默認值2存儲到DB列中。 因此,下次您從數據庫中獲取2時,只有您可以獲得2。

當操作布爾屬性(如checkeddisabledmultiple ,應使用.prop()而不是.attr().removeAttr() 建議的其他一些改進:

  • 使用this.checked代替$(".dedstat").is(":checked") ,以便它是上下文特定的
  • 使用ID選擇器代替類
  • 您可以鏈接jQuery方法,因此既可以禁用輸入,也可以同時清空其值
  • 監聽change事件,而不是click <input>元素

 $("#dedstat").change(function() { if (this.checked) { $("#deductto").prop("disabled", false) } else { $("#deductto") .prop("disabled", true) .val(''); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="checkbox" name="dedstat" id="dedstat"> <input type="text" name="deductto" id="deductto"> 

如果希望在頁面加載時評估輸入的狀態,則還必須執行相同的邏輯,而不必將其綁定到onChange事件。 最好的方法是創建一個同時由onChange事件和DOMready / window.load事件調用的函數。 在下面的示例中,我們創建的方法將接受一個DOM節點作為參數,以便在上下文中知道您所指的是哪個復選框元素:

 // Method to conditionally enable/disable input var updateTextInput = function(el) { if (el.checked) { $("#deductto").prop("disabled", false) } else { $("#deductto") .prop("disabled", true) .val(''); } } // Call method when change event is fired from checkbox $("#dedstat").change(function() { updateTextInput(this); }); // Call method on DOMready, pass DOM node (not the jQuery object) updateTextInput($('#dedstat')[0]); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="checkbox" name="dedstat" id="dedstat"> <input type="text" name="deductto" id="deductto"> 

對於您的PHP,您可以簡單地使用tenary運算符有條件地將checked prop寫入您的輸入元素,即:

<input type="checkbox" name="dedstat" id="dedstat" <?php echo $dedstat == 1 ? 'checked' : ''; ?>>

只是一個小建議:頁面底部是您的JS嗎?

另外,我剛剛發現了一些東西:

$(“。dedstat”)<=您正在調用帶點的類。 您的輸入有ID。

$("#dedstat").click(function () {
    if ($("#dedstat").is(":checked")) {
        $("#deductto")
            .removeAttr("disabled")
    }
    else {
        $("#deductto")
            .attr("disabled", "disabled")
            var deductto = document.getElementById("deductto"); 
            .deductto.value = "";
    }
});

它應該工作得更好。

暫無
暫無

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

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