2012-11-06 65 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