2010-12-16 91 views
10

我们在只读文本框上有一个JQuery日期选取器控件。我们让文本框只读,以便用户不能输入自己的日期。这很好用,但我们希望为用户提供在选择日期后清除文本框内容的选项。如何清除只读jQuery日期选择器文本框?

你怎么能做到这一点?显然这个功能过去是内置于控制器中,但是是removed

注:我们禁止输入到文本框中使用:

$("#text-box").keypress(function (e) 
{ 
    e.preventDefault(); 
}); 

更新:我与所选答案的一个微小的变化解决了这个:

myTextBox.keydown(function(e){ 
     if (e.keyCode == 46 || e.keyCode == 8) { 
      //Delete and backspace clear text 
      $(this).val(''); //Clear text 
      $(this).datepicker("hide"); //Hide the datepicker calendar if displayed 
      $(this).blur(); //aka "unfocus" 
     } 

     //Prevent user from manually entering in a date - have to use the datepicker box 
     e.preventDefault(); 
    }); 
+1

你应该回答你的问题,而不是更新有问题的解决方案,并将错误的解决方案标记为答案。这对于像我这样花费数小时来实现你的'标记答案'然后发现它不是正确答案的许多用户来说肯定会节省时间。正确的答案有问题作为更新。 – 2017-04-18 08:02:02

回答

6

如何排除keys这是用户用来清除文本框'del','backspace'等?

$("#text-box").keypress(function (e) 
{ 
    switch(e.keyCode) { 
      case 46: // delete 
      case 8: // backspace 
      break; 
      default: 
      e.preventDefault(); 
      break; 
     } 
}); 
+1

按键实际上不适用于删除和退格。 http://stackoverflow.com/a/1116253/2660342 – 2017-04-18 07:56:47

2
 
$("#text-box").bind('keypress keydown', function (e) { 
    var tag = e.target.tagName; 
    if (e.which === 8 || e.which === 46) { 
    $(this).val(''); 
    $(this).datepicker("hide"); 
    $(this).blur(); 
    e.stopPropagation(); 
    e.preventDefault(); 
    return false; 
    } 
}); 

这应该在浏览器的don't trigger keypress events for "delete" keys工作。

相关问题