0
整體思路是通過下拉限制數量複選框後,其做法是: 我有下拉與下面的代碼jQuery的調用變量ajaxcomplete
<select name="form[norequnit][]" id="norequnit" class="rsform-select-box">
<option value="">...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
<input name="chk" type="checkbox" class="bd-lable" value="9432"><label>01</label>
<input name="chk" type="checkbox" class="bd-lable" value="9432"><label>02</label>
<input name="chk" type="checkbox" class="bd-lable" value="9432"><label>03</label>
<input name="chk" type="checkbox" class="bd-lable" value="9432"><label>04</label>
<input name="chk" type="checkbox" class="bd-lable" value="9432"><label>05</label>
<input name="chk" type="checkbox" class="bd-lable" value="9432"><label>06</label>
和由Ajax和下面的代碼加載一些複選框運行時獲得下拉值也阿賈克斯部分後,以限制基於所選的下拉選擇的數量,
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#norequnit").on("change", function() {
$('#unitcount').html($(this).find('option:selected').text());
});
$(document).ajaxComplete(function() {
$(".log").text("Triggered ajaxComplete handler.");
var nux = $('#unitcount').text();
$("input[name=chk]").change(function(){
var max= nux;
if($("input[name=chk]:checked").length == max)
{
$("input[name=chk]").attr('disabled', 'disabled');
$("input[name=chk]:checked").removeAttr('disabled');
}
else{
$("input[name=chk]").removeAttr('disabled');
}
})
});
});
</script>
問題:
變量「nux」僅在第一次嘗試時通過選擇下拉菜單來獲得價值,例如5,以便將這些框限制爲5次支票,但在此之後,如果將下拉列表更改爲任何其他數字,則複選框限制將保留爲5,換句話說「nux」不會得到新的變量。
爲什麼會改變馬錢?您沒有任何類型的更改事件處理程序來捕獲該事件並相應地進行更新。否則,使nux成爲選擇對象本身,而不是它的值,任何時候你只需要執行nux.text()或nux.val()就可以得到值,並且它會反映當時的情況。 – Taplar
nux正在從第一次下拉更改的unitcount獲得值,並且其正常工作。但之後通過更改下拉單元計數正在改變,但沒有更新nux。 – allogos
對,我在第一條評論中解釋了爲什麼。 Javascript本身並不是將JavaScript變量與dom元素綁定在一起的兩種方式。你必須自己管理狀態反射,或者引用dom元素,而不是自己始終處於最新狀態。 – Taplar