0

我正在使用 jquery 表单来提交用户的兴趣。我使用的是类似于复选框值的东西,它们是分开的,我使用 className 来获取它们的值。

我必须面对的问题是我是选择它们两者还是不选择它们,或者只选择它们中的一个。当我单击将使用 Ajax 提交表单的按钮时,我会检查它们,因此会产生相反的结果。

这是我正在使用的代码:

var getInterest = "";
if ($(".interestedInMale").attr('checked', 'checked') && 
  $(".interestedInFemale").attr('checked', 'checked')) {
   getInterest = "Females, Males";
} else if ($(".interestedInMale").attr('checked', 'checked')) {
   getInterest = "Males";
} else if ($(".interestedInFemale").attr('checked', 'checked')) {
   getInterest = "Females";
} else {
   getInterest = "";  
}

应该发生的是,它应该只为我提供值,而不是更改值,但它所做的是相反的,它首先更改我的意思是检查它们的值,然后提交具有 total value 的表单Females, Males。这不是我想要的。

这段代码下面是 ajax 提交块。上面是函数声明:

function submitThis() {

我做错了什么有什么帮助吗?此外,你可以给我一个更好的建议来获取 jQuery Ajax 中的复选框字段的值。

4

2 回答 2

1

您在这里使用 .attr() 的 setter 版本,.attr('checked', 'checked')checked属性值设置为checked.

使用问题的正确解决方案是检查已检查属性的值,可以使用.is():checked选择器来完成,如下所示

var getInterest = "",
    $chkmale = $(".interestedInMale"),
    $chkfmale = $(".interestedInFemale");
if ($chkmale.is(':checked') && $chkfmale.is(':checked')) {
    getInterest = "Females, Males";
} else if ($chkmale.is(':checked')) {
    getInterest = "Males";
} else if ($chkfmale.is(':checked')) {
    getInterest = "Females";
} else {
    getInterest = "";
}
于 2013-09-15T13:19:15.990 回答
1

这段代码:

$(".interestedInMale").attr('checked', 'checked')

使用类选择器检查复选框.interestedInMale。使用下面的代码来测试它是否被选中

if ($(".interestedInMale").is(':checked')) { }
于 2013-09-15T13:24:08.263 回答