4

运行以下代码时,Internet Explorer 8 给出错误“对象不支持此属性或方法”:

jQuery(function($) {
  $("input[name='first_name'], input[name='last_name']").not(".input-skippable").change(function() {
    if(!$(this).is(".input-skippable")) {
      if($(this).val().trim().length > 0) {
        $(this).removeClass("error");
      } else {
        $(this).addClass("error");
      }
    }
  });
  $("input[name='first_name']").change();
});

出错的那一行是带有“if($(this).val().trim().length > 0) {”的那一行。

似乎它与 val() 然后 trim() 有关。

4

3 回答 3

2

一个问题是它.val()返回一个字符串,破坏了 jQuery 链,这意味着您不能再应用任何 jQuery 方法 ( .trim())。另一个问题是trimjQuery 对象本身的方法,其中要修剪的值必须作为参数 ( $.trim(value)) 传递,而不是链接到 jQuery 函数调用 ( $(value).trim()) 的方法。获取值的修剪长度的正确代码如下:

$.trim($(this).val()).length

编辑:这个答案假设 ECMAscript 5 的String.prototype.trim()字符串方法不可用——它允许 OP 的代码在 IE9 和大多数现代浏览器中工作——但在 IE8 及更低版本中不可用。相反,它依赖于jQuery.trim().

于 2013-03-06T08:53:26.860 回答
1

IE8及以下不支持该trim方法,可以使用jQuery$.trim实用功能。

if( $.trim( this.value ).length > 0 ) {
于 2013-03-06T08:50:23.090 回答
0

这是错误的 if($(this).val().trim().length > 0) {

改成

if($.trim($(this).val())!="") {

于 2013-03-06T08:50:09.360 回答