onkey事件 - 禁用按钮的问题

时间:2010-10-06 13:05:04

标签: javascript html onkeypress

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

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

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分: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'变量放在函数外部以获得性能,否则每次调用此函数时都需要获取引用。可怕的。