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

1つの問題は.val()、文字列を返し、jQueryチェーンを切断することです。つまり、これ以上jQueryメソッドを適用できなくなります(.trim())。もう1つの問題はtrim、jQueryオブジェクト自体のメソッドであり$.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 に答える