javascript - JQuery 无法从单选按钮读取值

标签 javascript jquery ajax forms

我有一个带有基于图像的单选按钮的表单。我尝试根据所选值(10、30 或 100)进行 AJAX 调用,但尽管选择了 10 以外的值,它还是尝试使用 10。

$(document).ready(function() {
    $('#prodadd').submit(function(e) {
        e.preventDefault();
        var $form = $(this);
        alert($('input[name="size"]').val());
        /* $.ajax({
            url: $form.attr('action'),
            method: $form.attr('method'),
            dataType: 'json',
            data: {
                size: $('input[name="size"]').val(),
                qty: $('input[name="qty"]').val()
            }
        }).done(function(result) {
            $('.cartmess').append(result.message);
        }); */
    });
});
label.prodbutt > input[type="radio"] {
    visibility: hidden;
    position: absolute;
}
label.prodbutt > input[type="radio"]:checked ~ .productbutton {
    visibility: hidden;
}
label.prodbutt > input[type="radio"]:checked ~ .productbuttons {
    visibility: visible;
}
label.prodbutt {
    position: relative;
}
.productbutton {
    height: 25px;
    visibility: visible;
    cursor: pointer;
}
.productbuttons {
    height: 25px;
    visibility: hidden;
    position: absolute;
    left: 0;
    cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="./common/addcart.php" id="prodadd" method="post">
	<strong>Bottle Size</strong><br/>
	<label class="prodbutt">
		<input type="radio" value="10" class="size" name="size" required="required"/>
		<img src="http://i.imgur.com/ODWmTVb.png" class="productbutton"/>
		<img src="http://i.imgur.com/EVx8z9D.png" class="productbuttons"/>
	</label>
	<label class="prodbutt">
		<input type="radio" class="size" value="30" name="size" required="required"/>
		<img src="http://i.imgur.com/lt2KGvA.png" class="productbutton"/>
		<img src="http://i.imgur.com/Fg2rnIU.png" class="productbuttons"/>
	</label> <label class="prodbutt">
		<input type="radio" class="size" value="100" name="size" required="required"/>
		<img src="http://i.imgur.com/1ynBmyJ.png" class="productbutton"/>
		<img src="http://i.imgur.com/YP6PWFP.png" class="productbuttons"/>
	</label> <br/><br/>
	Qty: <input type="text" size="2" maxlength="2" value="1" name="qty" required="required"/><br/><br/>
	<input type="submit" value="Add to Cart"/>
	<div class="cartmess"></div><br/><br/>
</form>

我已经注释掉了我正在进行的 AJAX 调用,并在其位置放置了一个警报以回显 size 中的值。例如,选择 30 将警报 10 而不是 30。

为什么会发生这种情况?

最佳答案

选择器 $('input[name="size"]').val(); 将返回第一个匹配的元素,不一定是第一个检查的元素。最简单的解决方案是使用:

$('input[name="size"]:checked').val();

引用号:https://api.jquery.com/checked-selector/

关于javascript - JQuery 无法从单选按钮读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043146/

相关文章:

javascript - 在 Meteor 中按日期过滤 Mongo 文档

javascript - javascript中如何通过prototype实现super机制?

javascript - JSF 2.1 Ajax 自动完成 + 仅在用户停止输入后才进行服务器搜索

javascript - 无法使用不同模型读取未定义的 Backbone 集合的属性 'type'

javascript - forEach 代码不起作用,但两个不同的 forEach 函数中的相同代码却起作用,为什么?

javascript - &lt;input type ="hidden">和全局JS变量有什么区别

javascript - Bootstrap 重置按钮 onclick 保持文本框有效

javascript - 如何将 jquery 选择添加在一起而不按 DOM 顺序排序

javascript - 如何仅在成功时才在循环中运行ajax请求以转到下一个循环值?

asp.net-mvc - AJAX POST 之后如何在 ASP.NET MVC 2 中正确重新呈现 Recaptcha