1

Stripes フレームワークと一緒に JavaScript クライアント テンプレートを使用しようとしています。これは、ストライプ フォーム タグ ライブラリを使用できないことを意味します。これはデフォルトで、どのチェックボックスがフォームとともにレンダリングされたかを判断するためにストライプが使用する非表示の暗号化フィールドを挿入するため、渡されなかった場合にどのチェックボックスがオフになっているかを判断できますフォーム パラメータとして。

タグ ライブラリを使用できずに、この暗号化された非表示フィールドをすべてのフォームと一緒に含めるのは大きな負担なので、グローバル ソリューションを探しています。私が思いついたのは、フォームが送信される前にインターセプトし、チェックされていないチェックボックスの値を false に変更し、サーバーに送信されるようにチェックすることです。これは、フォームの送信が完了する前に、チェックされていないすべてのオプションが簡単に再度チェックされるのをユーザーに見せるという副作用を伴います。チェックされたアニメーションを非表示にする方法はありますが、フォームに値を送信させる方法はありますか?

これが私の現在の解決策です:

$("body").delegate("form", "submit", function() {
    var $this = $(this);

    $('input:checkbox:not(:checked)', $this).each(function() { 
        var $this = $(this);
        $this.attr('value', 'false');
        $this.attr('checked', 'checked');
    });
});
4

1 に答える 1

0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        // This :unchecked custom selecor was created by me.
        //http://nanoquantumtech.blogspot.in/2012/03/unchecked-selector-matches-all-elements.html
        $.extend($.expr[':'], {
            unchecked: function (obj) {
                return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked'));
            }
        });

        $(document).ready(function () {
            $('#checkBoxList').find(':checked').addClass('vechicalChecked');

            $('#btnCheckedToUncheckedValues').click(function () {
                var checkedToUncheckedValues = [];

                $('#checkBoxList').find('.vechicalChecked:unchecked').each(function () {
                    checkedToUncheckedValues.push($(this).val());
                });

                alert('Checked To Unchecked Values Are : ' + (checkedToUncheckedValues.length == 0 ? 'none' : checkedToUncheckedValues.join(',')));
            });
        });
    </script>
</head>
<body>
    <div id="checkBoxList">
        <input type="checkbox" value="0" name="Vechical" checked="checked" />0<br />
        <input type="checkbox" value="1" name="Vechical" />1<br />
        <input type="checkbox" value="2" name="Vechical" checked="checked" />2<br />
        <input type="checkbox" value="3" name="Vechical" checked="checked" />3<br />
        <input type="checkbox" value="4" name="Vechical" />4<br />
        <input type="checkbox" value="5" name="Vechical" checked="checked" />5<br />
        <input type="checkbox" value="6" name="Vechical" />6<br />
        <input type="checkbox" value="7" name="Vechical" />7<br />
        <input type="checkbox" value="8" name="Vechical" checked="checked" />8<br />
        <input type="button" id="btnCheckedToUncheckedValues" value="checked To Unchecked Values" />
    </div>
</body>
</html>
于 2012-04-26T10:25:28.097 に答える