2017-03-16 1 views
0

J'essaie de définir le focus après avoir ajouté un élément dans une zone de texte qui contient déjà du contenu. Voir par exemple de ce que j'ai fait jusqu'à présent. Si j'ajoute .focus() après mon préfixe, il ajoute seulement le focus à la fin de textarea. pas après la première ligne que je veux atteindre.Définir le focus après la première ligne de la zone de texte

$(document).ready(function(){ 
// GET USER 
var signedInUser = document.getElementById('zz4_Menu').innerHTML; 
var end = signedInUser.indexOf('<'); 
var signedByUser = signedInUser.substring(6, end); 

// DEFINE DATE 
Date.prototype.getMinutesTwoDigits = function(){ 
    var retval = this.getMinutes(); 
    if (retval < 10){return ("0" + retval.toString());} 
    else{return retval.toString();} 
} 
var timeStamp = new Date(); 
var currenttimeStamp = timeStamp.toLocaleDateString() + ', ' + timeStamp.getHours() + ":" + timeStamp.getMinutesTwoDigits(); 

// ADD BUTTON BEFORE TEXTBOX 
$('#textarea').before('<p><a href="#" id="workLogBtn">Signer</a></p>'); 

// ADD DETAILS TO TEXTBOX 
    $('#workLogBtn').click(function(){ 
    $('#textarea').prepend(currenttimeStamp + '(' + signedByUser + ')' + ' - ' + '\n\n').focus(); 
    }); 
}); 

C'est le code que j'ai pour le moment.

My fiddle

Répondre

0

Pour définir la position du curseur, vous pouvez utiliser la fonction suivante:

$.fn.setCursorPosition = function(pos) { 
    this.each(function(index, elem) { 
    if (elem.setSelectionRange) { 
     elem.setSelectionRange(pos, pos); 
    } else if (elem.createTextRange) { 
     var range = elem.createTextRange(); 
     range.collapse(true); 
     range.moveEnd('character', pos); 
     range.moveStart('character', pos); 
     range.select(); 
    } 
    }); 
    return this; 
}; 

exemple comment utiliser:

$('#textarea').setCursorPosition(5); 
+0

Cela n'a rien fait. Est-ce que je fais quelque chose de mal? https://jsfiddle.net/johneilif/bmox4ceh/ –