【问题标题】:JS class not applying on datapickerJS 类不适用于日期选择器
【发布时间】: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 =&gt; e.className &amp;&amp; e.className.match(/formFieldRequired/i) &amp;&amp; !e.value)) { return false; }(这将替换循环)。
  • 感谢 Aluan 的帮助,我试过把它放进去,但我似乎无法让它工作(我对此很陌生,所以这可能是问题!)你能请告诉我应该用这段代码替换什么?
  • 您可以使用表单元素的children 属性来获取输入。我建议Array.prototype.some 告诉您Array 是否包含与指定谓词函数匹配的元素(例如:e =&gt; true)。因为节点列表并不是真正的数组,所以我们必须使用.call。摆脱循环。

标签: javascript html jquery-ui-datepicker


【解决方案1】:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/jquery.datetimepicker.js"></script>

<form id="myform">
<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">
</form>

<script>
    function checkForm(thisForm) {
        var len = thisForm.elements.length;
        var cnt = 0 ;
        for ( var i=0; i < len; i++) {
            var elem = thisForm.elements[i] ;
            console.log(elem.className)
            if (elem.className.indexOf("formFieldRequired") != -1)  {
                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;
    }           

    checkForm(document.getElementById("myform"));
</script>

【讨论】:

  • 完美,解决了。非常感谢!
猜你喜欢
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多