Javascript onkey事件-禁用按钮的问题

Javascript onkey事件-禁用按钮的问题,javascript,html,onkeypress,Javascript,Html,Onkeypress,说明:开始时,该字段的值为YYYY-MM-DD。如果用户删除该值而未键入任何内容,则应禁用“确定”按钮。如果用户删除该值并键入新值,则应启用“确定”按钮。该代码仅适用于第二种情况 function ChangeOkButton() { if(document.getElementById('fromDate').value == null) { document.getElementById('save').disabled = true; } el

说明:开始时,该字段的值为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();"/>
函数更改按钮()
{
if(document.getElementById('fromDate')。值==null)
{document.getElementById('save').disabled=true;}
else{document.getElementById('save').disabled=false;}
}  
这可能吗


谢谢大家!

该函数对于此类控件不是很有用,因为您可以使用“12345”、“foobar”或其他与实际值不同的内容覆盖该值。我想你希望日期从2000年1月1日开始

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);"/>

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


注意:将OKBTT变量放在函数的性能之外,否则每次调用此函数时都需要获取引用。糟透了。

10倍!不幸的是,它不起作用..即使字段中没有值,按钮也被启用。我在FF3.6上试过,它可以工作,只需在“onkeyup”中更改“onkeypress”我在Fire中有一个错误,但是:
字段未定义[Break on this error]if(/^(yyyyy \-MM \-DD{2\d{3}-(0[1-9…]\{d}3[01])$/)。test(field.value)){
onkeyup=“ChangeOkButton(此);“你必须传递‘this’:)传递什么?我把它改成了
onkeyup=“ChangeOkButton(this)”