1

JQuery UIダイアログでchangeShowTips()メソッドを呼び出そうとしていますが、メソッドは常に「NOTchecked!!!!」を返します。

問題であると想定されるのは?

    <div id="dialog-tip">
        <div>
            <input type="checkbox" name="showTips" value="showTips" checked="checked" onclick="changeShowTips();"/>Show tips on start up
        </div>
    </div>

    <script type="text/javascript">
        $(document).ready(function () {
            showTips()
        });


        function showTips() {
            $("#dialog-tip").dialog({
                height: 520,
                width: 515,
                modal: true,
            }).parents('.ui-dialog:eq(0)').wrap('<div class="black-tie"></div>');             
        }

        function changeShowTips() {
            if (showTips.checked == true) {
                alert('checked!!!');
            }
            else {
                alert('NOT checked!!!');
            }
        }

    </script>
4

4 に答える 4

2

厄介なjQueryがあります

 <div id="dialog-tip">
    <div>
        <input type="checkbox" name="showTips" value="showTips" checked="checked"/>Show tips on start up
    </div>
</div>

<script type="text/javascript">
    $(document).ready(function () {
        showTips()

        $('input', '#dialog-tip').click(changeShowTips()); // do not have inline js, bind it here
    });


    function showTips() {
        $("#dialog-tip").dialog({
            height: 520,
            width: 515,
            modal: true,
        }).parents('.ui-dialog').eq(0).wrap('<div class="black-tie"></div>');       
        // it is faster for sizzle to use a standard css selector to modify the jquery object and then use a jquery specific selector 'eq' separately
        // instead of combining css/jquery selectors in one statement      
    }

    function changeShowTips() {
        if ($('input', '#dialog-tip').is(':checked')) { // there is jQuery for this - you should also compare and not assign
            alert('checked!!!');
        }
        else {
            alert('NOT checked!!!');
        }
    }

</script>
于 2012-09-29T13:27:48.050 に答える
2

これは、コード内でshowTipsターゲット要素ではなく関数を参照しているためです。

<input type="checkbox" 
       name="showTips" 
       value="showTips" 
       checked="checked" 
       onclick="changeShowTips(this);"
/> Show tips on start up

function changeShowTips(showTips) {
     if (showTips.checked) {
         alert('checked!!!');
     }
     else {
         alert('NOT checked!!!');
     }
}

http://jsfiddle.net/n74JG/

于 2012-09-29T13:32:45.320 に答える
1

代わりにこれを試してください...

入力にshowTipsのIDと名前を指定してから...

    function changeShowTips() {
        if ($('#showTips').is(':checked')) {
            alert('checked!!!');
        }
        else {
            alert('NOT checked!!!');
        }
    }
于 2012-09-29T13:23:54.783 に答える
0

構文的には、チェックボックスをオンにするためにjQueryではなくvanillaJSを使用しようとしているように見えます。

jQueryセレクターはこの$([...])のように見え、通常はこれを使用してクラス$( "。someclass")またはID $( "#someid")を選択します。入力フィールドにIDを付けたくない場合は、ドキュメントを参照してください:http: //api.jquery.com/attribute-equals-selector/

次に、$([...])。prop( "checked")を使用して、チェックされているかどうかを確認できます。

于 2012-09-29T13:29:22.533 に答える