[英]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
屬性不能用於根據數據庫值將其保持checked
或unchecked
。 並分別綁定選中或未選中屬性。 因此,請像這樣更改該標簽:
<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。
當操作布爾屬性(如checked
, disabled
, multiple
,應使用.prop()
而不是.attr()
或.removeAttr()
。 建議的其他一些改進:
this.checked
代替$(".dedstat").is(":checked")
,以便它是上下文特定的 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.