0

HTML

<input type="text" name="year" autofocus onkeypress='validate(event)'><br>
<input type="text" name="month" onkeypress='validate(event)'><br>

JavaScript

 <script type="text/javascript">
function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }}
</script>

如果我的输入(名称“年”)为空,如何禁用(防止在文本框中写入数字)输入(名称“月”)?当然,如果我要输入年份,如何启用(允许写入数字)它?

4

2 回答 2

0

默认设置禁用月份输入,因为我相信最初年份将具有空值

<input type="text" name="mounth" onkeypress='validate(event)' disabled='disabled'>

现在编写模糊和按键事件处理程序

var month_input = document.getElementById('month'); 
var year_input = document.getElementById("year"); 
year_input.onblur = function(){ 
 if (this.value == '') { 
   month_input.setAttribute('disabled',true); 
 } 
}
year_input.onkeypress = function(){ 
  if (this.value!= ''){ 
    month_input.setAttribute('disabled',false); 
  } 
}

我不确定它是否onblur会起作用,因为我很困惑它是否起作用,我们可能也需要onfocus事件处理程序。我没有测试过!!

于 2013-04-10T22:37:32.900 回答
0

这是一个与@prabeen giri 非常相似的解决方案:

HTML需要稍微修改如下:

<form>
 <div>
  <input type="text" name="year" autofocus="autofocus" onkeypress="javascript:validate(event);"><br>
  <input type="text" id='monthinput' name="mounth" onkeypress='javascript:validate(event)' disabled="true"><br>
 </div>
</form>

然后我们添加代码来获取月份输入,并设置“禁用”属性。我们可以删除evt.preventDefault()代码,因为我们希望人们能够打字。

function validate(evt) {
  var theEvent = evt || window.event,
      regex    = /[0-9]|\./,
      monthel  = document.getElementById('monthinput'),
      key      = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  if ( !regex.test(key) ) {
      monthel.setAttribute('disabled', 'disabled');
  } else {
      monthel.removeAttribute('disabled', "");
  }
}

我实际上已经对此进行了测试,并且确实有效。但是,如果您对根据输入是否有效显示/隐藏输入更感兴趣,我编写了一个jQuery 插件,可以轻松显示/隐藏表单部分。显然它需要jQuery。

于 2013-04-10T22:46:02.220 回答