0

jquery フォームを使用して、ユーザーの関心を送信しています。私が使用しているのは、チェックボックスの値のようなもので、それらは別々であり、className を使用して値を取得します。

私が直面しなければならない問題は、それらの両方を選択するか、どれも選択しないか、またはそれらの 1 つだけを選択するかです。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 = "";  
}

何が起こるべきかというと、値を変更するのではなく、値を提供するだけで、値を変更するのではなく、最初に値を変更するということです。つまり、両方をチェックしてから、合計値を持つフォームを送信しますFemales, Males。そして、これは私が望むものではありません。

このコードの下には ajax 送信ブロックがあります。そして、この上に次のような関数宣言があります。

function submitThis() {

私が間違っていることに対する助けはありますか?また、jQuery Ajax でチェックボックス フィールドの値を取得するためのより良い提案をお願いします。

4

2 に答える 2

1

ここでは .attr() のセッター バージョンを使用しており、属性値をに.attr('checked', 'checked')設定します。checkedchecked

問題を使用する正しい解決策は、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 に答える