使用javascript将日期定义为未定义

时间:2014-10-22 17:46:51

标签: javascript jquery date

       function duplicateWithLines()
        {
          var datefield = jQuery("#lineItemDate").val();
          if ( !( datefield && datefield.match( /^\d{1,2}[/]\d{1,2}[/]\d{4}$/ ) ) ) alert("Date is required");
          else {
           //DO blah blah
          }
        }
    ---
    ---

          <input type='button' class='duplicate_button' name='duplicateWithLines' value='Duplicate Line Items:' onClick='duplicateWithLines()'/>
          <hsi:calendar name="lineItemDate" size='10' maxlength='10' />

在Line var datefield = jQuery(&#34;#lineItemDate&#34;)。val();价值即将到来,我认为。因为它没有输入else block.if条件令人满意所以警告msg打印。但它必须进入其他区块。 并且日期格式将输入为dd / mm / yyyy。 进入else块的方法是什么。

2 个答案:

答案 0 :(得分:1)

解决val()问题:您正在尝试查找 id lineItemDate的元素。但是你的元素没有id。它确实有名称,因此$('[name=lineItemDate]').val()应该有效。

如果格式已修复(dd/mm/yyyy),请尝试以这种方式修改if部分以避免丑陋且昂贵的匹配:

var dateFromValue = new Date(
                     $('[name=lineItemDate]').val().split('/').reverse().join('-')
                    );
if (!isnNaN(dateFromValue)) {
   /* it's a date! */
} else {
  /* don't bother */
}

虽然我们正在使用它,但不要使用内联处理程序。内联处理程序的每次激活都会产生一个新的JavaScript解释器。在您的脚本使用中:

$('[name=duplicateWithLines]').on('click', duplicateWithLines);

重命名函数可能是明智之举,以避免名称冲突。

答案 1 :(得分:0)

jQuery不知道如何从hsi:calendar元素中检索值。您需要找到包含数据值的html元素,以便使用jquery来获取它。