如果复选框被选中或输入:文本有值
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;
【讨论】:
非常感谢!这么简单的错误:)以上是关于如果复选框被选中或输入:文本有值的主要内容,如果未能解决你的问题,请参考以下文章
如果选中,则更改复选框旁边的文本。 HTML + JS 或 jQuery [关闭]