如何在Jquery UI对话框中检查复选框值

时间:2012-09-29 13:20:46

标签: javascript jquery html jquery-ui

我试图在JQuery UI对话框中调用changeShowTips()方法, 但是该方法总是返回“NOT checked !!!!”

似乎是什么问题?

    <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 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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/

答案 2 :(得分:1)

试试这个......

为输入提供showTips的ID以及名称...

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

答案 3 :(得分:0)

语法明智地看起来你正试图使用​​vanilla JS而不是jQuery来检查复选框。

jQuery选择器看起来像这个$([...]),通常你用它来选择类$(“。someclass”)或ids $(“#someid”)。如果您确实不想为输入字段提供ID,请查看文档:{​​{3}}

然后您可以使用$([...])。prop(“checked”)查看是否已选中。