JS HTML DOM 类型不匹配错误

JS HTML DOM typeMismatch error

提问人:CH1ND1T 提问时间:8/17/2016 更新时间:8/22/2016 访问量:888

问:

我正在使用 XHTML、JSF 和 JavaScript 创建一个表单,通过在 h:commandButton 中使用 onclick() 来验证已提交到各自字段中的信息。

我设法创建了一个 JS 文件,该文件检查空字段并在 true 时提醒用户,这工作正常。接下来,我想尝试使用 typeMismatch 属性(在我称为 Validity 的函数中)确保输入与标记中定义的类型匹配。这是我到目前为止的代码:

function Validity() {

var checkName=document.getElementById("formdiv:cardName");
var checkCard=document.getElementById("formdiv:cardnumber");
var checkExp=document.getElementById("formdiv:expDate");

var error="";

var inputChecks=[checkName, checkCard, checkExp];

for (i=0; i < inputChecks.length; i++){

    if(inputChecks[i].value.validity.typeMismatch){

        error= "Your fields dont match the required input type. E.g Card Number must be a number"
    }
}

document.getElementById("errorMessage").innerHTML=error; 

}

我的问题出在第 48 行,我得到一个“未捕获的 TypeError:无法读取未定义的属性'typeMismatch'”。我只编写了一个星期的 JS,所以对它比较陌生,所以我确信这取决于我如何声明/引用某些东西。我已经检查了 w3schools 和其他来源,但都无济于事。所以我希望这里有人能够提供帮助。任何建议将不胜感激

javascript jsf dom xhtml

评论

0赞 Mr Lister 8/17/2016
那么你有元素等吗?这些元素有s吗?这些 s 有 s 吗?脚本崩溃时的值是什么?id="formdiv:cardName"valuevaluevalidityi
0赞 CH1ND1T 8/18/2016
是的,这些元素与 id=“formdiv” 表单中的 h:inputText 字段相关,因此当调用 onclick:“Validation()” 时,JS 将获取此时字段中的值。示例 <div class=“col-sm-4”> <h:inputText id=“cardName” tpe=“text” name=“cardName” required=“true” /> </div> 并且 i 的值为 null,因为脚本在计算 if 语句时崩溃

答:

0赞 Brett 8/22/2016 #1

我们唯一能从您给出的代码中辨别出的错误是尚未定义“有效性”属性。

重要的是要注意 JavaScript 中 null 和 undefined 之间的区别

实际上,它未定义的事实表明它从未被设置过。我的猜测是你遇到了一些问题,要么设置有效性属性的代码没有被执行,要么它的行为与你预期的不同。

如果您添加更多信息,例如代码的其余部分(JavaScript 和 XHTML),则有人可能会更具体地回答。

Truthy 和 Falsy 价值观也可能很有用,因为这些事情意外发生是很常见的