如果复选框被选中或输入:文本有值

Posted

技术标签:

【中文标题】如果复选框被选中或输入:文本有值【英文标题】:if Checkbox is checked or input:text has value 【发布时间】:2017-06-12 09:43:29 【问题描述】:

我有一个函数,它应该检查 input:text 是否有值或 checkbox 是否被选中。如果没有,则会出现弹出窗口。它仅适用于选中/未选中的输入,而不适用于 input:text。我在这里做错了什么:

$("#wcv-product-edit #save_button").click(function()
    var checked = $("#shipping input:checked" ).length > 0;
    var text_value = $("#shipping input:text" ).length > 0;
    var store_checked = $("#store_shipping input:checked").length > 0;

    if (!checked && !store_checked || !text_value && !store_checked)
        $('#ship_wrong_popup').show();
        $('.page .wcv-tabs .tabs-nav li a.shipping').addClass('ship_highlight');
        return false;
     else if (!checked && store_checked || !text_value && store_checked)
        // $('#ship_wrong_popup').show();  
        return true;
     else if (checked && store_checked || text_value && store_checked)
        // $('#ship_wrong_popup').show();  
        return true;
    
);

【问题讨论】:

尝试将input:text更改为input[type=text] 【参考方案1】:

问题出在这一行:

var text_value = $("#shipping input:text" ).length > 0;

只选择“非空”文本框,它选择type="text"任何输入无论它是否为空。 只要#shipping 中存在文本框,它就永远不会为0。


如果你只有一个文本框,检查length而不是元素计数:

var text_value = $("#shipping input:text" ).val().length > 0;

如果您有多个文本框并想查看它们是否所有都有内容,您可以使用.filter从元素计数中过滤掉空输入:

var text_value = $('#shipping input:text').filter(function () 
    return !!this.value;
).length;

【讨论】:

非常感谢!这么简单的错误:)

以上是关于如果复选框被选中或输入:文本有值的主要内容,如果未能解决你的问题,请参考以下文章

如果选中复选框,则打开输入文本(JQuery)

如果选中,则更改复选框旁边的文本。 HTML + JS 或 jQuery [关闭]

iCheck 检查复选框是不是被选中

如果 php 和 jQuery 选中或未选中,则在 php 中动态创建复选框值

如果选中任一复选框,则启用和禁用文本字段

闪烁文本如果复选框被选中为真