1

私のサイトでのボット スパム コメントを防止するもう 1 つの試みとして、送信ボタンをデフォルトで無効にし、ユーザーがチェックボックスをクリックして有効にできるようにしたいと考えています。

これが私のコードです:

<label>
    <span class="notbot">
        <input type="checkbox" class="acceptance" value="1" name="iaccept">
    </span> I'm not a bot!
</label>

<input type="submit" value="Post Comment" id="submit" name="submit">

ここに画像の説明を入力

ここにフィドルがあります。

私の質問は、ブラウザー間の互換性を念頭に置いて Javascript または jQuery を使用してこれを行うにはどうすればよいですか? それぞれに問題があるさまざまなソリューションに出くわしました。

理想的には、ユーザーが JS を有効にしていない場合にボタンが無効にならないソリューションです...回答することを選択した場合は、コード例を提供し、fiddleを更新してください。

4

4 に答える 4

0

Pure Javascript の例: フォーラム ページのルック アンド フィールを維持するために、送信ボタンの入力タイプを変更しています。

<form id="mainform" method="post" action="Default.aspx">
    <label>
        <span class="notbot">
            <input type="checkbox" class="acceptance" value="1" name="iaccept" />
        </span> I'm not a bot!
    </label>
    <br />
    <input type="submit" id="submit" name="submit" value="Post Comment" />
</form>

<script type="text/javascript" language="javascript">
    var submit = document.getElementById("submit");
    var iaccept_chkbox = document.getElementsByName("iaccept");

    if (iaccept_chkbox != null && iaccept_chkbox.length == 1) {
        submit.type = "button";
        iaccept_chkbox[0].onclick = function () {
            if (iaccept_chkbox[0].checked == true) {
                submit.type = "submit";
            }
        }
    }
</script>

http://jsfiddle.net/bbdEH/

于 2013-06-15T17:32:33.230 に答える
0

JavaScriptが無効になっているときに送信ボタンを有効にしたままにし、ほとんどのブラウザで動作するjQueryソリューション:

$('#submit').prop('disabled', true);

$('.acceptance').on('change', function() {
    $('#submit').prop('disabled', !this.checked);
});

フィドル

于 2013-06-15T14:57:41.780 に答える