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块的方法是什么。
答案 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来获取它。