how to hide blinking cursor in input text?
JavascriptJqueryHtmlCssJavascript Problem Overview
I want to make something which would look like a select input but is actually not, here are the steps.
I made an <input type="text">
.
I added a background-image
, which will show a "select arrow", giving the impression that it's a select box.
I added a default value to this input.
There will be a hidden div which will SlideDown()
right under this input when I click on it.
I tried the read only thing so that the value cannot be changed, but the blinking cursor will show up.
If I use disabled
, the blinking cursor will not show up, but the .click()
or .focus
function in jQuery will not work. The drop down menu will not SlideDown()
.
How can I make it clickable while not showing the blinking cursor?
Here's the code
<div style="padding-top:17px; overflow:hidden;">
<div style="float:left;">
<label for="secretquestion">Secret Question</label><br>
<input type="text" class="inputselect" id="secretquestion" name="secretquestion" value="Choose a Secret Question" tabindex=10 /><br>
<div class="selectoptions" id="secretquestionoptions">
<b>test</b>
</div>
</div>
</div>
CSS
.selectoptions
{
display: none;
background-color: white;
color: rgb(46,97,158);
width: 250px;
margin:auto;
border-style: solid;
border-width:1px;
border-color: rgb(46,97,158);
font-size: 14px;
text-align: center;
}
.inputselect {
color: white;
cursor: pointer;
background-image: url('inputselect.png');
padding-top: 5px;
padding-bottom: 5px;
padding-left:10px;
padding-right:-10px;
width:240px;
border-style: solid;
border-color: rgb(46,97,158);
border-width: 1px;
}
.inputselect:hover {
outline:none;
color:aqua;
cursor: pointer;
background-image: url('inputselecthover.png');
}
.inputselect:focus {
outline:none;
color:aqua;
cursor: pointer;
background-image: url('inputselecthover.png');
}
Javascript Solutions
Solution 1 - Javascript
Just add this to "inputselect" class:
caret-color: transparent;
Solution 2 - Javascript
The color of the cursor matches the color of the text.
<input type="text" style="color: transparent">
If you actually want to show text in the input box (my, some people are needy), you can use a text shadow.
<style>
body, div, input {
color: #afa;
text-shadow: 0px 0px 1px #fff;
}
<style>
(tested Firefox and Safari).
Solution 3 - Javascript
I just used a blur to get rid of the cursor.
$('input').mousedown(function(e){
e.preventDefault();
$(this).blur();
return false;
});
Solution 4 - Javascript
I think this is a perfect solution: make the input wide enough, align right to screen right, thus make cursor and content locate at the outside of the screen, while it's still clickable
Solution 5 - Javascript
I finally find a trick solution.
<div class="wrapper">
<input type="text" />
</div>
.wrappr {
width: 100px;
height: 30px;
overflow: hidden;
}
.wrapper input {
width: 120px;
height: 30px;
margin-left: -20px;
text-align: left;
}
and in my sitation, it works!
Solution 6 - Javascript
This may be helpful (though not a complete response) - I used it to disable input in a recent project:
document.getElementById('Object').readOnly = true;
document.getElementById('Object').style.backgroundColor = '#e6e6e6';
document.getElementById('Object').onfocus = function(){
document.getElementById('Object').blur();
};
The user focuses on the input when the click in it, the blur() function then removes the focus. Between this, setting the readOnly to "True" and setting the background color to grey (#e6e6e6), your user shouldn't get confused.