1

我以一种形式设置了两组单选按钮:

<li>1&nbsp;<Input type = 'radio' id ='part1no' Name ='part1' value= '0'>No
           <Input type = 'radio' id ='part1yes' Name ='part1'  checked="checked" value= '1'>Yes
</li>
<li>2&nbsp;<Input type = 'radio' id ='part2no' Name ='part2'  value= '0'>No
           <Input type = 'radio' id ='part2yes' Name ='part2' checked="checked" value= '1'>Yes
</li>

我正在尝试通过此 javascript 函数提交这些按钮的值:

var dataString = 'username='+SessionVars.my_username+'&lessonid='+SessionVars.my_lesson_number;

$('#tracking_submit').click(function(){
    $.ajax({
        url: "php/tracking.php",
        type:'POST',
        data: dataString+'&p1='+$("input[@name=part1]:checked").val()+'&p2='+$("input[@name=part2]:checked").val(),
        success: function(){
            $('#tracking_message').html("Thank you for updating.").fadeIn('slow');              
            setTimeout(function(){$('#tracking_message').fadeOut('slow');},2000);
        }                   
    });
    return false;   
});

问题是当我检查数据库时,它会将两个字段都更新为第一个单选按钮的值。如果第一个设置为“是”,则两者都将设置为 1,如果第一个设置为 0,则两者都将为 0。任何人对可能导致此问题的原因有任何想法吗?

4

1 回答 1

1

$("input[@name=part1]:checked").val()不应该有字符@。那是 XPath 语法,而不是 jQuery 选择器语法。

jQuery 可能会忽略那个“@attribute”请求(因为它是无效的),找到所有input的,然后.val()返回集合中的第一个值。

于 2012-09-15T22:12:02.080 回答