HTML5 input type “search” is not supported by all the available browsers yet,
So this is a jquery alternative to this html5 feature
for a demo , visit jsFiddle
[html]
<table border="1">
<tr>
<td>Normal :</td>
</tr>
<tr>
HTML5 :
</tr>
<tr>
<td>jQuery :</td>
jqSearchField" />
</tr>
</table>
[/html]
[javascript]
$.widget(‘iCircle.searchInput’, {
options: {},
_create: function () {
var thisElem = this.element;
var wrapper = $("
thisElem.wrap(wrapper);
// after $.wrap() methed wrapper will have no reference to the DOM Element of wrapper
// so targetElem.parent() will return the wrapper jquery object
wrapper = thisElem.parent();
// draw closebtn
var closeBtnRight = thisElem.outerHeight() – thisElem.innerHeight();
var closeBtnLineHeight = wrapper.height();
var closeBtn = $("").html("X").
css({ position:"absolute",
"font-family": "sans-serif",
right:closeBtnRight+"px",
lineHeight:closeBtnLineHeight+"px",
color:"#0059A0",
visibility:"hidden",
cursor:"pointer"
}).
appendTo(wrapper);
// reduce width and add padding to avoid overlapping on closeBtn
var thisElemWidth = thisElem.width()-closeBtn.outerWidth();
var thisElemMargin = thisElem.css("margin");
thisElem.css({"width":thisElemWidth,margin:thisElemMargin,"padding-right":closeBtn.outerWidth()});
// add click handler to closeBtn
closeBtn.click(function(){
console.log("Click");
thisElem.val("");
});
// add logic to show or hide the close btn
thisElem.keyup(function(){
console.log("keyup");
if(thisElem.val() == ""){
closeBtn.css("visibility","hidden");
}else{
closeBtn.css("visibility","visible");
}
});
wrapper.mouseenter(function(){
console.log("mouseover");
if(thisElem.val() == ""){
closeBtn.css("visibility","hidden");
}else{
closeBtn.css("visibility","visible");
}
});
wrapper.mouseleave(function(){
console.log("mouseleave");
if(!(thisElem.is(":focus"))){
closeBtn.css("visibility","hidden");
}
});
}
});
$("#jqSearchField").searchInput();
[/javascript]