【问题标题】:jquery user input to upper case not work on some casejquery用户输入大写在某些情况下不起作用
【发布时间】:2018-06-03 01:52:00
【问题描述】:

我使用 Jquery 将用户输入实时覆盖为大写。但是我收到的一些数据不是大写的2%左右。我可以知道是什么原因造成的吗?

//convert all lower case to upper case
$("input, textarea").not("[data-controlname='txtCompanyEmailAddress'] input," +
                    "[data-controlname='KeyAccEmailaddress'] input," +
                    "[data-controlname='AccDeptEmailaddress'] input," +
                    "[data-controlname='CompanyEmail'] input," +
                    "[data-controlname='CompanyURL'] input," +
                    "[data-controlname='txtInternalComment'] textarea," +
                    "[data-controlname='txtRejectCommentToSupplier'] textarea"
                    ).on('input', function(evt) {
          var input = $(this);
          var start = input[0].selectionStart;
          $(this).val(function (_, val) {


            return val.toUpperCase();
          });
          input[0].selectionStart = input[0].selectionEnd = start;
 });

【问题讨论】:

  • 您知道哪些输入导致输出本应为大写而不是大写吗?您确定无法转换为大写的输入不是由.not() 列表中的元素之一生成的吗?你有什么理由不使用 css 规则text-transform: uppercase;
  • 当然,那些被隐藏失败的输入不会在 .not() 中被选中。

标签: javascript jquery browser uppercase


【解决方案1】:

如果没有特定原因您为此使用 javascript,另一种方法是将以下内容添加到您的 css:

.uppercase {
  text-transform: uppercase;
}

然后将.uppercase 类添加到每个始终需要其值大写的输入元素。

【讨论】:

  • 请注意,使用 CSS 将文本显示为大写,但不会更改底层文本;因此,当提交到数据库时,文本将是用户输入的情况,而不一定是用户在提交之前 saw 的情况。
  • 确实如此。这将是在 javascript 中进行转换的一个很好的正当理由。再说一次,我会将它与任何其他验证代码组合在一起,而不是在每次有输入时都内联更新它。
  • 同意,但这是答案中值得一提的警告之一。
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 2017-06-29
相关资源
最近更新 更多