检查HTML输入元素是否为空或用户未输入任何值

uxhixvfz  于 2022-12-02  发布在  其他
关注(0)|答案(7)|浏览(285)

与这里的this问题相关。我可以检查DOM中的元素是否有值吗?我试图将其放入“if”语句中,但不确定我的方法是否正确。下面是:

if (document.getElementById('customx')){
    //do something
}

或者应该是:

if (document.getElementById('customx') == ""){
    //do something
}

EDIT:我的意思是,customx是一个文本输入框。我如何检查这个字段是否没有输入文本。

tuwxkamq

tuwxkamq1#

getElementById方法返回一个Element对象,您可以使用该对象与元素进行交互。如果找不到该元素,则返回null。对于input元素,该对象的value属性在value属性中包含该字符串。
通过利用&&运算符短路以及null和空字符串在布尔上下文中被视为“falsey”这一事实,我们可以将对元素存在和值数据存在的检查组合起来,如下所示:

var myInput = document.getElementById("customx");
if (myInput && myInput.value) {
  alert("My input has a value!");
}
ddrv8njm

ddrv8njm2#

如果在DOM中找不到该元素,getElementById将返回false。

var el = document.getElementById("customx");
if (el !== null && el.value === "")
{
  //The element was found and the value is empty.
}
ybzsozfc

ybzsozfc3#

var input = document.getElementById("customx");

if (input && input.value) {
    alert(1);
}
else {
    alert (0);
}
fafcakar

fafcakar4#

你的第一个基本上是对的。这个,FYI,是不好的。它在DOM节点和字符串之间做相等性检查:

if (document.getElementById('customx') == ""){

DOM节点实际上是它们自己的JavaScript对象类型,因此这种比较根本不起作用,因为它是在两种截然不同的数据类型上进行相等性比较。

ou6hu8tu

ou6hu8tu5#

您需要:

if (document.getElementById('customx').value === ""){
    //do something
}

value属性将为您提供一个字符串值,您需要将其与空字符串进行比较。

ndasle7k

ndasle7k6#

var myInput = document.getElementById("customx");
if (myInput.value.length > 0) {
  //do something;
}

.length > 0是检查输入元素的另一种方法)

50pmv0ei

50pmv0ei7#

空不等于“无值”。
HTMLInputElement.value''当你有一个无效的输入。如果.value不是'',那么它不是空的。这是肯定的,但由于有.value === ''但不是空的时候,我们需要测试。例如,在Chrome中,有一个number输入类型,如果你输入.e,它将被放置在输入框中,但是.value不会从''更改,因为它是无效。

<input type=number>

我们可以向浏览器询问更多信息,谢天谢地,ValidityState得到了非常好的支持。基本上,如果没有值,但浏览器说有一个错误的输入,那么它不是空的。

function isInputEmpty(input) {
  return !input.value && !input.validity.badInput;
}

编辑:感谢@osullic在规范中找到此内容:
控件的值是其内部状态。因此,它可能与用户的当前输入不匹配。
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#a-form-control's-value

相关问题