请勿更改输入的字符序列

时间:2014-01-09 09:14:31

标签: jquery html

我有一个html输入,它的值等于当前日期。我想允许用户在输入中添加文本但不删除日期。任何人都可以帮助我吗?

这是我正在使用的代码

<input type="text" name="entryCode" id="entryCode" />

/* get current date */
var $now = new Date();
var $month = (($now.getMonth().length+1) === 1)? ($now.getMonth()+1) : '0' +  ($now.getMonth()+1);
var $day = $now.getDate()+"";if($day.length==1) $day="0" + $day;
var $year = $now.getFullYear();
$("#entryCode").val($year + $month + $day + "-");

输入的值是20140109-,我想在“ - ”之后允许用户输入,保持前9个字符不变。

由于

2 个答案:

答案 0 :(得分:1)

将文字放在输入之外:

20140109-<input type="text" name="entryCode" id="entryCode" />

然后将用户输入添加到您想要的前缀

您也可以使用它来模拟带有固定前缀的输入 See example here

答案 1 :(得分:1)

您可以检查值的长度并防止默认行为:

$("#entryCode").on('keydown', function(e){
    var kc = e.which || e.keyCode;
    if($(this).val().length <= 9 && kc == 8){
       e.preventDefault();
    }
});

Fiddle Demo Here


如果您可以这样更新标记:

<label>
    <input type="text" name="entryCode" id="entryCode" value='' />
</label>

您可以使用以下代码:

var $now = new Date();
var $month = (($now.getMonth().length + 1) === 1) ? ($now.getMonth() + 1) : '0' + ($now.getMonth() + 1);
var $day = $now.getDate() + "";
if ($day.length == 1) $day = "0" + $day;
var $year = $now.getFullYear();
$("#entryCode").closest('label').prepend($year + $month + $day + "-").end().focus();

Updated Fiddle