javascript - 在 .keypress 和删除上应用 CSS 和删除 CSS

标签 javascript jquery html css forms

我正在尝试修改表单。为 data-placeholder 设置样式并没有真正成功,我转向了 jQuery。

所以占位符的样式是

input[data-placeholder] {font-style: italic;}

这很好。

现在我需要在用户输入数据时将其变为“正常”,我使用 jQuery 做到了这一点:

$(function() {
  var allInputs = $(":input");
  $(allInputs).keypress(function() {
    $(this).css('font-style', 'normal');
  });
  preventDefault();
});

现在当用户删除文本时占位符保持“正常”。

当用户删除文本时,我需要将 data-placeholder 设置为 italic。因此,我需要在删除文本后将其恢复为旧设置。

我试过这个:

$(function() {
    var allInputs = $(":input");
    $(allInputs).keypress(function() {
        $(this).css('font-style', 'normal');
    });
    preventDefault();
    if($(allInputs).val().length === 0) {
        $(this).css('font-style', 'italic');
    }
});

但它没有用,我不知道为什么。

谢谢。

最佳答案

我做了一些更改来处理整个占位符功能。这是因为您使用的是数据占位符而不是占位符。您应该可以删除该插件并仅使用它。

CSS

input[data-placeholder] {
  font-style: italic;
}

input[data-placeholder].selected {
  font-style: normal;
}

jQuery

$(document).ready(function() {
  $("input:text").each(function() {
    $(this).val($(this).data('placeholder')).focus(function() {
      if ($(this).val() == $(this).data('placeholder')) {
        $(this).val('').addClass('selected');
      }
    }).blur(function() {
      if ($(this).val().length == 0) {
        $(this).val($(this).data('placeholder')).removeClass('selected');;
      }
    });
  });
});

Working JSFIDDLE

关于javascript - 在 .keypress 和删除上应用 CSS 和删除 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292988/

相关文章:

jquery - 谷歌浏览器不显示箭头标志

javascript - 如何将光标放在文本区域时弹出模式

html - p :first child doesn't work if a img tag is immediately after the p tag?

html - 为什么我的头像上不去?

javascript - 使用 XMLHTTPRequest 下载图片

javascript - react 引用 : Cannot read property 'focus' of null

javascript - 我可以用 setTimeout 重置一个未绑定(bind)的函数吗?

html - 为什么底部 div 文本会渗入顶部 div

javascript - d3js : how to toggle css class after clicking on anelement

javascript - Mootools 添加一个类到 'a' href ="something"