Forum Moderators: open
<form action="#" method="post">
Name:<br />
<input type="text" name="name" value="your name" /><br />
E-mail:<br />
<input type="text" name="mail" value="your email" /><br />
<input type="submit" value="Send">
</form>
<script type="text/javascript">
//elem must be an element from the DOM as an object
//selStart and selEnd must be integers, where to start and end the selection
function setSelectedText(elem, selStart, selEnd) {
if (elem.setSelectionRange) { //standard
elem.focus();
elem.setSelectionRange(selStart, selEnd);
} else if (elem.createTextRange) { //IE
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd('character', selEnd);
range.moveStart('character', selStart);
range.select();
}
}
document.onkeyup = function (evt) {
var evt = evt || window.event, //window.event for IE
el = evt.target || evt.srcElement, //srcElement for IE
nn = el.nodeName.toLowerCase(),
kc = evt.which || evt.keyCode; //keyCode for IE
if (kc == 9/*tab key*/ && nn == 'input' && el.type.toLowerCase() == 'text') {
//an input of type text has been tabbed into,
//set it's text selection to the end of it:
setSelectedText(el, el.value.length, el.value.length);
}
};
</script>
<form action="#" method="post">
Name:<br />
<input type="TEXT" name="name" value="your name" /><br />
E-mail:<br />
<input type="text" name="mail" value="your email" /><br />
<input type="submit" value="Send">
</form>
<!DOCTYPE html>
<html>
<head>
<title>Change Tab Selection Test</title>
</head>
<body>
<p>
Tab to the 2nd input below and notice that the cursor is at the end of
the text box with nothing selected.
</p>
<input id="foo" value="Hello">
<input id="bar" value="World">
<script>
window.onload = function () {
var bar = document.getElementById('bar');
bar.onfocus = function () {
var idx = bar.value.length;
if (bar.setSelectionRange) {
setTimeout(function () {bar.setSelectionRange(idx, idx);},0);
}
else if (bar.createTextRange) {
var range = bar.createTextRange();
range.collapse(true);
range.moveEnd('character', idx);
range.moveStart('character', idx);
range.select();
}
}
}
</script>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script>
<style type="text/css">
* { font-family: Verdana; font-size: 96%; }
label { width: 10em; float: left; }
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; }
p { clear: both; }
.submit { margin-left: 12em; }
em { font-weight: bold; padding-right: 1em; vertical-align: top; }
</style>
<script>
$(document).ready(function(){
$("#curl").focus(function(){
if( this.value == this.defaultValue ) {
$(this).val("http://");
}
});
$("#commentForm").validate();
});
</script>
</head>
<body>
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<p>
<input id="cname" name="name" size="25" class="required" value="Name" />
</p>
<p>
<input id="cemail" name="email" size="25" class="required email" value="Email" />
</p>
<p>
<input id="curl" name="url" size="25" class="url" value="URL" />
</p>
<p>
<textarea id="ccomment" name="comment" cols="22" rows="5" class="required">Comment</textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</fieldset>
</form>
</body>
</html>
function moveCursorToEnd(el) {
var idx = el.value.length;
if (el.setSelectionRange) {
setTimeout(function () {el.setSelectionRange(idx, idx);},0);
}
else if (el.createTextRange) {
var range = el.createTextRange();
range.collapse(true);
range.moveEnd('character', idx);
range.moveStart('character', idx);
range.select();
}
}
$('#cemail').focus(function () {
moveCursorToEnd(this);
});
I tried a number of things, different methods of going about it
var CURRENT_EVENT; //global var will be used to track and easily access latest document event
//elem must be an element from the DOM as an object
//selStart and selEnd must be integers, where to start and end the selection
function setSelectedText(elem, selStart, selEnd) {
if (elem.setSelectionRange) { //standard
elem.focus();
elem.setSelectionRange(selStart, selEnd);
} else if (elem.createTextRange) { //IE
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd('character', selEnd);
range.moveStart('character', selStart);
range.select();
}
}
//el must be an element from the DOM as an object
//type should be string name of event type ('on' prefix not required, so 'mouseover' or 'onmouseover' works fine)
//fn should be a function to set as an event handler
function addThisEvent(el, type, fn) {
var i, len, ename = type.replace(/^on/i, '');
if (el.attachEvent) { //IE
el.attachEvent('on'+ ename, function () {
return fn.call(el, window.event); //fixes IE's fudging of 'this' in attachEvent
});
} else if (el.addEventListener) { //Standard
el.addEventListener(ename, fn, false );
} else {
el["on"+ename] = fn;
}
}
addThisEvent(window, 'load', function () {
var inputs = document.getElementsByTagName('input');
for (var i = 0, len = inputs.length; i < len; i++) {
if (inputs[i].type == 'text') {
addThisEvent(inputs[i], 'focus', function () {
var O = this,
len = O.value.length,
//firefox is a big p.o.s. these days... it is keypress & others are keydown
lastWasKey = /key(press|down)/i.test(CURRENT_EVENT.type);
if (lastWasKey && CURRENT_EVENT.keyCode == 9/*tab key*/) {
window.setTimeout(function () {
setSelectedText(O, len, len);
}, 0);
return false;
}
});
}
}
});
var eventTypes = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'keydown', 'keypress', 'keyup'];
for (var i = 0, len = eventTypes.length; i < len; i++) {
addThisEvent(document, eventTypes[i], function (evt) {
var evt = evt || window.event, //window.event for IE
el = evt.target || evt.srcElement, //srcElement for IE
kc = evt.which || evt.keyCode, //keyCode for IE
cc = evt.charCode || evt.keyCode; //cc for getting charCode, IE uses keyCode onkeypress
if (el.nodeType == 3) { //safari needs
el = el.parentNode;
}
CURRENT_EVENT = {
event : evt,
target : el,
keyCode : kc,
charCode : cc,
type : evt.type
};
});
}
addThisEvent(window, 'load', function () {
var inputs = document.getElementsByTagName('input');
for (var i = 0, len = inputs.length; i < len; i++) {
if (inputs[i].type == 'text') {
addThisEvent(inputs[i], 'focus', function () {
var O = this,
len = O.value.length,
//firefox is a big p.o.s. these days... it is keypress & others are keydown
lastWasKey = /key(press|down)/i.test(CURRENT_EVENT.type);
if (lastWasKey && CURRENT_EVENT.keyCode == 9/*tab key*/) {
window.setTimeout(function () {
setSelectedText(O, len, len);
}, 0);
return false;
}
});
}
}
});
addThisEvent(window, 'load', function () {
var inputs = document.getElementsByTagName('input');
for (var i = 0, len = inputs.length; i < len; i++) {
if (inputs[i].type == 'text') {
addThisEvent(inputs[i], 'focus', function () {
if (CURRENT_EVENT) {//IE needs the 'if' at times...
var O = this,
len = O.value.length,
//firefox is a big p.o.s. these days... it is keypress & others are keydown
lastWasKey = /key(press|down)/i.test(CURRENT_EVENT.type);
if (lastWasKey && CURRENT_EVENT.keyCode == 9/*tab key*/) {
window.setTimeout(function () {
setSelectedText(O, len, len);
}, 1); //<--adjust the timeout duration as needed>
return false;
}
}
});
}
}
});
addThisEvent(window, 'load', function () {
var inputs = document.getElementsByTagName('input');
for (var i = 0, len = inputs.length; i < len; i++) {
if (inputs[i].type == 'text') {
addThisEvent(inputs[i], 'focus', function () {
if (CURRENT_EVENT) {//IE needs the 'if' at times...
var O = this,
len = O.value.length,
//firefox is a big p.o.s. these days... it is keypress & others are keydown
lastWasKey = /key(press|down)/i.test(CURRENT_EVENT.type);
if (O.id == 'curl' && O.value == O.defaultValue) {
O.value = 'http://';
len = O.value.length;
setSelectedText(O, len, len);
}
if (lastWasKey && CURRENT_EVENT.keyCode == 9/*tab key*/) {
window.setTimeout(function () {
setSelectedText(O, len, len);
}, 0);
return false;
}
}
});
}
}
});
$(document).ready(function(){
$("#curl").focus(function(){
if( this.value == this.defaultValue ) {
$(this).val("http://");
}
});
$("#commentForm").validate();
});
$(document).ready(function(){
$("#commentForm").validate();
});