我将 Laravel 与一些 jQuery 一起用于 Web 应用程序。当我提交一个空表单时,我重定向回填充了旧值的页面(form model binding
),这一切都按预期工作。
问题出在 jQuery 部分。我有几个部分,当 radio 组的值为 0
(未选中)时不显示,当它更改为 1
(选中)时显示。当我填写页面时这工作正常,但如果我在表单中有验证错误,当我重定向回来时它会出错。
当我出现表单错误时,我被重定向回填充了旧值的页面,并读取了单选组的选定值,所有值仍然为 0。为什么 val( )
0,即使 radio 选择的值为 1?
var r4 = $('input[name="configtype"]');
var s4 = $('#comprehensive');
initsec(r4, s4);
function initsec(radio, togglesection){
console.log(radio.val());
//When being redirected back to the page with the radio selected at the value '1',
//console.log still shows 0
if (radio.val() == 1)
{
togglesection.toggle();
}
}
编辑
var r4 = $('input[name="configtype"]:checked');
在这种情况下无法工作,因为我也在我的其他地方使用 radio 场我不应该只获取检查值而不是检查值的代码,因此据我所知不会重复(因为我已经阅读了 var r4 = $('input[name="configtype"] :checked');
一百万次,但这在我的代码中是不可能的)
最佳答案
radio
是所有 radio 元素的集合,而不仅仅是选中的元素,因此调用 .val()
将返回集合中第一个元素的值。
您可以使用.filter()
只选择选中的项目
console.log(radio.filter(':checked').val());
或
var r4 = $('input[name="configtype"]:checked');
关于javascript - jQuery 选择值始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36711751/