2012-11-06 64 views
-2

结束动态文本框,我有以下输入标签:文本追加到使用jQuery

<input type="text" id="title" class="title" maxlength="20> 

我需要“天”被附加到框,用户键入文本的末尾。这是如何完成与jQuery?
我已经试过这样:

$('#title').on('keyup', function() { 
this.value = this.value+' day'; 
}); 

,但没有奏效。

+1

http://WhatHaveYouTried.com –

+0

补充说明。抱歉。 – Jaxkr

+3

你是什么意思“用户键入”?如果他们输入“a”并且你追加“日”来获得“敬意”,然后他们将光标移动到最后并键入“b”?你是否再次追加“日”以获得“adaybday”?如果等到用户离开该字段后再测试该值是否已经以“日”结尾(如果不添加,那么)不是更好吗?尝试'blur'事件而不是'keyup' ... – nnnnnn

回答

3

使用jQuery追加末的文本,然后移动插入符号到所需的位置:

$('#title').on('keyup', function(e) { 
    // Ignore if backspace is pressed 
    if(e.keyCode == 46){ 
     return false; 
    } 

    // Set the value based on the current value length 
    // If it's longer than 3, "day" is already appended 
    this.value = (this.value.length<3)?this.value+="day":this.value; 

    // Move caret to the latest added character 
    var caretPos = this.value.length-3; 
    if(this.createTextRange) { 
     var range = this.createTextRange(); 
     range.move('character', caretPos); 
     range.select(); 
    } 
    else { 
     if(this.selectionStart) { 
      this.focus(); 
      this.setSelectionRange(caretPos, caretPos); 
     } 
     else 
      this.focus(); 
    } 
}); 

Live, working jsFiddle example

+0

这是对问题中代码的改进吗? –

+1

@ user1689607:我误解了这个问题。我正在修复它。 – JCOC611

+0

尽管做全选和删除几乎是不可能的。 – Ivan