【发布时间】:2017-08-15 11:01:15
【问题描述】:
早上好,
我有一些 javascript 在打印之前检查输入是否为空,如果是,请取消打印。
我已将 jquery datepicker 作为一个类添加到其中一个字段,现在它只应用一个类或另一个类。 (我已经尝试使用日期选择器作为 ID)但不起作用。
Javascript:
function checkForm(thisForm) {
var len = thisForm.elements.length ;
var cnt = 0 ;
for ( var i=0; i < len; i++) {
var elem = thisForm.elements[i] ;
if (elem.className == "formFieldRequired") {
if ((elem.value == "" || elem.value == -1)) {
alert("WARNING:\n You must supply information for the " + elem.name + " field");
elem.focus();
return false;
}
}
}
window.print();return true;
}
输入:
<input name="Effective Date" type="text" style="width:12%;" class="formFieldRequired datepicker" placeholder="DD/MM/YYYY" onkeyup="javascript:return mask(this.value,this,'2,5','/');" maxlength="10">
关于为什么会发生这种情况以及任何修复的任何想法? - 我可能遗漏了一些非常明显的东西!
【问题讨论】:
-
element.className将是"formFieldRequired datepicker",而不是"formFieldRequired"。 -
我已根据您的建议进行了更改,但是当我在表单中未输入任何内容的情况下进行打印时,它将打印并忽略所有其他“formFieldRequired”和“formFieldRequired datepicker”类
-
试试
if (Array.prototype.some.call(thisForm.elements, e => e.className && e.className.match(/formFieldRequired/i) && !e.value)) { return false; }(这将替换循环)。 -
感谢 Aluan 的帮助,我试过把它放进去,但我似乎无法让它工作(我对此很陌生,所以这可能是问题!)你能请告诉我应该用这段代码替换什么?
-
您可以使用表单元素的
children属性来获取输入。我建议Array.prototype.some告诉您Array是否包含与指定谓词函数匹配的元素(例如:e => true)。因为节点列表并不是真正的数组,所以我们必须使用.call。摆脱循环。
标签: javascript html jquery-ui-datepicker