我有以下基于按钮点击运行的代码。
function ClickYes() {
$('#<%=txtMsg.ClientID%>').attr('placeholder', 'Tell me more');
}
该按钮被声明为以下
<button type="button" class="com-yes-btn2 feedback-btn-grey empx11b12" id="btnYes" onclick="javascript:ClickYes();">
</button>
问题是我需要根据事件动态设置占位符att,在chrome和firefox中行为是正确的,但是在使用IE9时没有添加占位符属性。
如何管理此跨浏览器
由于
答案 0 :(得分:3)
据我所知,IE9不支持placeholder
属性,因此它在ie9中不起作用。
Placehoder attribute not supported in ie9
You can follow this link to see the compatibility on caniuse.com
所以你可以尝试这种解决方法:
function ClickYes() {
if(navigator.userAgent.indexOf("MSIE") > 0){
$('#<%=txtMsg.ClientID%>').val('Tell me more');
}else{
$('#<%=txtMsg.ClientID%>').attr('placeholder', 'Tell me more');
}
}
答案 1 :(得分:3)
IE9不支持placeholder
属性,您需要使用blur
&amp; focus
事件来模拟此功能。
function ClickYes() {
var element = $('#<%=txtMsg.ClientID%>');
// default action (on moderns browsers)
var placeholder = function() {
element.attr('placeholder', 'Tell me more');
};
if (navigator.appVersion.match(/MSIE [\d.]+/)) {
// if MSIE: we override this function
placeholder = function() {
var placeholderText = 'Tell me more';
element.val(placeholderText);
element.blur(function(){
$(this).val() == '' ? $(this).val(placeholderText) : false;
});
element.focus(function(){
$(this).val() == placeholderText ? $(this).val('') : false;
});
};
};
placeholder(); // we call the created function
}
答案 2 :(得分:3)
是 IE 9不支持占位符。但你可以环顾一些像javascript这样的替代方案来轻松实现这个目标
<input type="text" placeholder="test" value="placeholder text"
onfocus="if (this.value=='placeholder text') this.value = ''" onblur="if (this.value=='') this.value = 'placeholder text'"/>
但是在使用此方法时需要注意,因为此方法会设置value
的{{1}}。因此,当您检索它时,您将获得该值。因此,无论何时使用它,都需要检查占位符值。
你的功能就像这样
textbox
现在您需要处理function ClickYes() {
// for modern browsers
$('#txtMsg').attr('placeholder', 'Tell me more');
// for older browsers
$('#txtMsg').val('Tell me more');
$('#txtMsg').css('color','#CCC');
}
和focus
事件,以使其完整,就像这样
blur
<强> Js Fiddle Demo 强>
答案 3 :(得分:1)
我使用place-holder.js,它易于使用: PlaceHolder
你只能通过引用jquery和placeholder.js以及代码
来使用它$('input, textarea').placeholder();