为什么在点击事件上选中复选框以进行提交

时间:2013-09-15 13:16:56

标签: jquery ajax

我使用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 = "";  
}

应该发生的是它应该只提供值,而不是改变值,但它的作用是相反的,它首先改变我的意思检查它们的值,然后提交具有总值{{ 1}}。这不是我想要的。

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

Females, Males

我做错了什么帮助?另外,你可以给我一个更好的建议,让我在jQuery Ajax中获取Checkbox字段的值。

2 个答案:

答案 0 :(得分: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 = "";
}

答案 1 :(得分:1)

此代码:

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

使用类选择器.interestedInMale选中复选框。 使用以下代码测试是否已选中

if ($(".interestedInMale").is(':checked')) { }