所以我有3个收音机按钮 使用不同的值,当我选择其中一个时,它总是给我值“3”或它们的最后一个值。我尝试提交没有ajax它的工作正常!
这是我的.js代码
$(document).ready(function(){
$('form').on('submit', function() {
var that = $(this),
url = that.attr('action'),
type = that.attr('method') ,
data = {};
that.find('[name]').each(function(index, value){
var that = $(this),
name = that.attr('name'),
value = that.val();
data[name] = value;
});
$.ajax({
url: url,
type: type,
data: data,
success : function(rdata) {
$("#st").html(rdata);
}
});
return false;
});
});
这是我的HTML:
<form action="test.php" id="send" method="POST" accept-charset="UTF-8" autocomplete="off">
<table>
<tr><td><input type="radio" name="val" value="1">1</td></tr>
<tr><td><input type="radio" name="val" value="2">2</td></tr>
<tr><td><input type="radio" name="val" value="3">3</td></tr>
<tr><td><input type="submit"></td></tr><tr><td><div id='st'></div>/td></tr>
</table>
test.php:
if (isset($_POST['val'])) {
$val = $_POST['val'];
echo $val;
}
答案 0 :(得分:1)
尝试使用以下代码段获取所选的单选按钮值 现在,您正在迭代所有单选按钮并发送按钮值的数据(因此始终发送每个()中的最后一个(。)
$('input[name=val]:checked').val()
我已用您填写的代码更新了答案:
$(document).ready(function(){
$('form').on('submit', function() {
var that = $(this),
url = that.attr('action'),
type = that.attr('method') ,
data = {};
data[name] = $('input[name=val]:checked').val();
$.ajax({
url: url,
type: type,
data: data,
success : function(rdata) {
$("#st").html(rdata);
}
});
return false;
});
});
答案 1 :(得分:1)
要简单地解决问题,您应该更改以下行:
..
that.find('[name]:checked').each(function(index, value){
..
您在那里做的是迭代所有单选按钮,并始终将值分配给您的变量,无论单选按钮的选中状态如何。使用:checked
修饰符,您告诉它只查看已检查的元素(实际上,在这种情况下,.each
并不是必需的)。您可以像这样修改它(因为您通常只检查一个无线电),用以下代码替换.each
迭代:
checkedRadio = that.find('[name]:checked');
name = checkedRadio.attr('name');
value = checkedRadio.val();
data[name] = value;
答案 2 :(得分:1)
工作演示: JSFiddle - You can check console network it is sending the data.
您想要获取已选中的单选按钮的值,以便您可以使用$('input[name=val]:checked').val()
尝试这样:
$(document).ready(function(){
$('form').on('submit', function() {
var that = $(this),
url = that.attr('action'),
type = that.attr('method') ,
data = {};
//data[name] = $('input[name=val]:checked').val();
$.ajax({
url: url,
type: type,
data: 'val = '+$('input[name=val]:checked').val();,
success : function(rdata) {
$("#st").html(rdata);
}
});
return false;
});
});
然后,您可以像这样获取test.php文件中的值:
if (isset($_POST['val'])) {
$val = $_POST['val'];
echo $val;
}