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' />
在行var datefield = jQuery(“#lineItemDate”)。val();我认为价值即将来临。因此,它无法进入else块。如果条件满足,则将警报msg打印出来。但是它必须输入else块。
并且日期格式将输入为dd / mm / yyyy。
进入其他区块的方式是什么。
最佳答案
解决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);
重命名函数以避免名称冲突可能是明智的。