[英]jQuery radio button value is not changed on page load
我在網上搜索並嘗試了來自 SO 的類似問題的所有解決方案,但無法讓這個解決方案起作用。
我在 Django 管理員中工作,我有RadioSelect
用於is_valid
字段的is_valid
小部件, is_valid
中有兩個單選按鈕:
<div class="form-row field-is_valid">
<div>
<label for="id_is_valid_0">Is it valid?</label>
<ul id="id_is_valid" class="inline">
<li><label for="id_is_valid_0"><input type="radio" name="is_valid" value="True" id="id_is_valid_0" checked>
Yes
</label>
</li>
<li><label for="id_is_valid_1"><input type="radio" name="is_valid" value="False" id="id_is_valid_1">
No
</label>
</li>
</ul>
</div>
</div>
<div class="form-row field-not_valid_reason">
<div>
<label for="id_not_valid_reason">Reason:</label>
<select name="not_valid_reason" id="id_not_valid_reason">
<option value="" selected>Choose</option>
<option value="Expired">Expired</option>
<option value="Not adopted">Not adopted</option>
<option value="Unknown">Unknown</option>
</select>
</div>
</div>
我想在.field-not_valid_reason
“是”( True
)時隱藏類.field-not_valid_reason
(這是is_valid
字段的默認值),並在單擊“否”時顯示它。 這是我實現的。 這是我的 jQuery 代碼:
(function($) {
$(function() {
var isValid = $('input[type=radio][name=is_valid]'),
notValidReason = $('.field-not_valid_reason'),
function toggleFields(value) {
if (value === 'True') {
notValidReason.hide(250);
} else {
notValidReason.show(250);
}
}
// show/hide on load based on previous value of isValid
toggleFields(isValid.val());
// show/hide on change
isValid.change(function() {
toggleFields($(this).val());
alert(isValid.val());
});
});
})(django.jQuery);
但是,出於某種原因,在對象以is_valid
字段為 False 保存在數據庫中后,當我在該對象的更改頁面上時,類.field-not_valid_reason
被隱藏,盡管活動單選按鈕設置為“否” ( False
)。 你能幫忙嗎?
在您當前的jquery代碼中,您在哪里使用alert(isValid.val());
查看選擇了哪個選項,但這只會為您提供第一個值,以便獲取用戶選擇使用$(this).val()
當前值。
然后,加載你在哪里獲得正確的radio
值但 div 仍然隱藏,因為你再次傳遞toggleFields(isValid.val());
這只會給你第一個值。所以,為了克服這個被checked
傳遞radio
值,即: $("input[name='is_valid']:checked").val()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.