2011-10-29 70 views
-3

我使用的是以下默認值腳本,它可以在除IE7以外的所有瀏覽器中工作,其中缺省值未顯示在「名稱」字段中(它應顯示名稱「)。默認值腳本不能在IE7中工作

我在IETester中運行了頁面,它在};'name[]': 'Name',下出現錯誤:「Expected identifier,string or number」。我不知道如何解決這個錯誤。

編輯:現在這個錯誤已經消失,刪除逗號後'Name',但我仍然沒有看到在IE7的默認值。你可以看到我的意思是this page

有人可以幫忙嗎?

謝謝,

尼克

<script> 
$(function() { 
    var defaults = { 
     'name[]': 'Name', 
    }; 

    // separating set and remove 
    // note that you could add "defaults" as an arg if you had different 
    // defaults for different fieldsets 
    var setDefaults = function(inputElements) { 
     $(inputElements).each(function() { 
      var d = defaults[this.name]; 
      if (d) { 
       // set with jQuery 
       // we don't need the data - just check on the class 
       $(this).val(d) 
        .addClass('default_value'); 
      } 
     }); 
    }; 

    var removeDefaults = function(inputElements) { 
     $(inputElements).each(function() { 
      if ($(this).hasClass('default_value')) { 
       $(this).val('') 
        .removeClass('default_value'); 
      } 
     }); 
    }; 

    setDefaults(jQuery('form[name=booking] input')); 

    // Toggles 
    $('form[name=booking]').delegate('input', { 
     'focus': function() { 
      removeDefaults($(this)); 
     }, 
     'blur': function() { 
      // switch to using .val() for consistency 
      if (!$(this).val()) setDefaults(this); 
     } 
    }); 
}); 
</script> 
+3

這是簡單的調試;聽說過alert()'?堅持其中的一些將告訴你問題出在哪裏。 – Matt

+0

@Matt不,我沒有聽說過alert()。我只是在IETester中運行了這個頁面,並且在'name'行下面給出了錯誤:'Expected identifier,string or number''';'name']':'Name','。我不知道如何解決這個錯誤。 – Nick

回答

1

and it gave the error: "Expected identifier, string or number" on the line with }; under 'name[]': 'Name',. I don't know how to fix this error though.

IE上後行扼流圈逗號這裏:

var defaults = { 
     'name[]': 'Name', 
    }; 

IIRC,理所當然按照ECMAScript標準。無論如何,只要刪除尾部的逗號,它會起作用。

+0

謝謝,錯誤現在在IE7中消失了,但我仍然沒有在名稱文本框中看到默認值'Name'。如果您在IE7中訪問[本頁](http://www.soterianetwork.org.uk/conference/workshops.php),可以看到我的意思。在所有其他瀏覽器上顯示。 – Nick

0

(我回答你笑的另一個問題)

首先找你說得逗號打破了它,這是不正確的JSON語法。

其次,不支持IE 8及以下(我很想說的不支持IE,因爲在所有它很爛,但顯然大部分上網本仍然使用它)

第三,你需要調試這個弄明白,看看解析JSON($ .parseJSON()我認爲)。我可以告訴你到底什麼是錯誤的,以及如何做到這一點,但它更值得花一些時間在瀏覽器中打開控制檯並使用console.log(VARIABLE)練習調試javascript。在你的JS中。或者在不同的時間使用警報(VARIABLE))。

例如

var setDefaults = function(inputElements) { 
     $(inputElements).each(function() { 
      var d = defaults[this.name]; 
      alert(d); 
      if (d) { 
       // set with jQuery 
       // we don't need the data - just check on the class 
       $(this).val(d) 
        .addClass('default_value'); 
      } 
     }); 
    };