问题: 我有一个带有一些文本的html文本输入框,当用户点击输入框时,我想让插入符/光标出现在输入框的开头。
我可以使用setSelectionRange()函数移动一个插入符,但我不喜欢这个效果 将文本输入框末尾显示的插入符号移到开头。我希望它显示在输入的开头。
示例:http://jsfiddle.net/edh8mkht/1/
HTML
<body>
<input type="text" id="myP" onmousedown="mouseDown()" value="Mozilla" />
</body>
JS
function mouseDown() {
document.getElementById("myP").style.color = "green";
document.getElementById("myP").setSelectionRange(0,0);
}
问题1 :
我使用mousedown事件移动插入符号,但它根本不移动插入符号,如果我使用onfocus事件也会发生同样的事情。这是因为插入符号出现在这两个事件之后并使setSelectionRange无效吗?
问题 2:
使用javascript解决问题的好方法是什么?注意:我不能使用占位符。
答案 0 :(得分:0)
此要求:
label
中(或者实际上任何可以接受子节点的元素)pointer-events
CSS property input
移至label
<强> HTML 强>
<label for="myP" onclick="click();">
<input type="text" id="myP" value="Mozilla" />
</label>
<强> CSS 强>
input#myP {
pointer-events: none;
}
<强>的JavaScript 强>
function click() {
var input = document.getElementById("myP");
input.style.pointerEvents = 'auto';
input.style.color = "green";
input.setSelectionRange(0,0);
console.log('click');
}
此实施中需要考虑的重要事项:
input#myP
而不是#myP
。否则,如果指定了label
属性,CSS将在某些浏览器中同时选择input
和for
。setSelectionRange
电话问题的一部分。我必须做一些研究才能找出原因。