1

チェックを外したりクリックしたりした場合、フォーム送信で単一のチェックボックスに強制的に「いいえ」を表示させる簡単な方法を作成しようとしています。いくつかの方法を試しましたが、これが最も近い方法ですが、まだ正しく機能していません。

どんな助けでも大歓迎です。マット

$(function opt() {
        if ($("#optIn").is(":checked")) {
            $("#optIn").value="Yes"
            $("#optIn").click(function() { this.value="No" })
        } else {
            $("#optIn").value="No"
            $("#optIn").click(function() { this.value="Yes" })
        }
    return false
});

opt();
4

3 に答える 3

7

チェックされていないチェック ボックスは正常なコントロールではないため、残りのフォーム データと共に POST されません。

これに対する最も簡単な解決策は、「チェックされていない」値を含むチェックボックスと同じ名前の非表示の入力を作成することです。

<input type="hidden" name="myCheckbox" value="No" />
<input type="checkbox" name="myCheckbox" value="Yes" />

myCheckbox=Noチェックボックスがチェックされていない場合、これによりフォームが POSTされます。

于 2012-05-16T01:14:04.473 に答える
4

率直に言って、以前にそのような機能のセットアップをどこで見たのかわかりません。あなたのコードはそのままで、次のように縮小できます。

$(function() { // on DOM ready (when the DOM is finished loading)
    $('#optIn').click(function() { // when the checkbox is clicked
        var checked = $('#optIn').is(':checked'); // check the state
        $('#optIn').val(checked ? "Yes" : "No"); // set the value
    });
    $('#optIn').triggerHandler("click"); // initialize the value
});

valueただし、チェックボックスの は画面に表示されません。次のように、別のフィールドを「はい」または「いいえ」の値で更新する必要がある場合があります。

<input type="checkbox" id="optIn" />
<span id="optInLabel"/>No</span>

そしてスクリプト:

$(function() { // on DOM ready (when the DOM is finished loading)
    $('#optIn').click(function() {
        optIn(this);
    });
    optIn($('#optIn')[0]);
});

function optIn(el) {
    var checked = $(el).is(':checked'); // check the state
    $('#optInLabel').html(checked ? "Yes" : "No"); // set the value
}

編集: jsFiddleの作業

サーバー側のポストフォーム送信でボックスがチェックされているかどうかを確認する必要がある場合は、非表示の入力フィールドを「はい」または「いいえ」の値で更新し、送信されたチェックボックス要素の値を無視することもできます (jaredhoyt前述のとおり)。彼の答えで)。

于 2012-05-16T01:13:33.143 に答える
0

ラジオ ボタンを使用します。

<span>Opt in?</span>
<br>
<input type="radio" name="optIn" value="no" checked>No&nbsp;
<input type="radio" name="optIn" value="yes">Yes

JavaScript は不要で、すべてのブラウザで動作し、シムもライブラリも何もありません。

于 2012-05-16T02:18:20.550 に答える