【问题标题】: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]

标签: jquery validation checkbox input


【解决方案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;

【讨论】:

  • 非常感谢!这么简单的错误:)
猜你喜欢
  • 2021-08-01
  • 2021-07-16
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多