0

说明:该字段的开头值为 YYYY-MM-DD。如果用户删除该值并且没有输入任何内容,则应禁用“确定”按钮。如果用户删除该值并键入新值,则应启用“确定”按钮。该代码仅适用于第二种情况。

function ChangeOkButton()
   {
     if(document.getElementById('fromDate').value == null)
        {  document.getElementById('save').disabled = true;  }
     else {document.getElementById('save').disabled = false;  }
   }  

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeypress="ChangeOkButton();"/>

这可能吗?

谢谢!

4

1 回答 1

0

该函数对于那种控制不是很有用,因为您可以用“12345”、“foobar”或其他与实际值不同的东西来覆盖该值。我想你想要从 2000-01-01 开始的日期

function ChangeOkButton(field) {
   var okbtt = document.getElementById('save');
   if ((/^(YYYY\-MM\-DD|2\d{3}\-(0[1-9]|1[0-2])\-(0[1-9]|[12]\{d}|3[01]))$/).test(field.value)) {
      okbtt.removeAttribute('disabled');
   }
   else {
      okbtt.disabled = 'disabled';
   }
}  

你的输入是

<input type="text" name="fromDate" id="fromDate" value="YYYY-MM-DD" onkeyup="ChangeOkButton(this);"/>

请注意,我没有考虑闰年或每月的天数,这只是对用户输入的数据类型的更可靠控制。根据需要更改正则表达式

注意:出于性能考虑,考虑将 'okbtt' 变量放在函数外部,否则每次调用该函数时都需要获取引用。可怕。

于 2010-10-06T13:30:32.100 回答