0

我正在处理表单(输入字段)验证。

问题 - IE 浏览器 (8-9) 将占位符文本视为值,并且在验证期间它接受相同的值,但应将其视为空值。我不想使用任何脚本并实现它,我想出了以下功能。任何人都可以稍微提高功能的可用性/范围。目前,每次用户输入值时,它都会将输入字段设为空白。但是,我希望它在占位符默认文本生效时首次验证。有什么建议吗?

HTML

<input type="text" name="memberid" id="memberid" placeholder="Some Value" />
<a href="#" class="alpha-btn" id="search-btn">Search</a> 

jQuery

$('#search-btn').on('click', function(){
    if($.browser.msie){
        $('input').each(function() {
            var theAttribute = $(this).attr('placeholder');
            if (theAttribute) {
                $(this).val('');
                alert('Please enter value - IE');
            }
        });
    }
});
4

2 回答 2

1

placeholder会产生问题,< IE 9因此您可以使用data()之类的

HTML

<input type="text" name="memberid" id="memberid" data-placeholder="Some Value" placeholder="Some Value"/>

脚本

$('#search-btn').on('click', function(){
    if($.browser.msie){
        $('input').each(function() {
            var theAttribute = $(this).data('placeholder');
            if (theAttribute == this.value) {// check placeholder and value
                $(this).val('');
                alert('Please enter value - IE');
            }
        });
    }
});
于 2013-11-13T11:11:30.927 回答
0

我认为实现你想要做的最好的方法是为 IE8 和 IE9 中的占位符构建一个完整的解决方案。为此,我建议使用带有输入占位符功能检测的Modernizr 。所以,你可以使用这样的函数:

window.ie8ie9placeholders = function() {
  if (!Modernizr.input.placeholder) {
    return $("input").each(function(index, element) {
      if ($(element).val() === "" && $(element).attr("placeholder") !== "") {
        $(element).val($(element).attr("placeholder"));
        $(element).focus(function() {
          if ($(element).val() === $(element).attr("placeholder")) {
            return $(element).val("");
          }
        });
        return $(element).blur(function() {
          if ($(element).val() === "") {
            return $(element).val($(element).attr("placeholder"));
          }
        });
      }
    });
  }
};

这将为 IE8 和 IE9 启用占位符。您需要做的就是在初始化代码时使用它。

ie8ie9placeholders();
于 2013-11-13T11:21:26.880 回答