2012-06-22 30 views
1

我有一個包含幾個輸入字段的形式的網站。在所有這些輸入結果中,我都有佔位符attribut,其中包含一些描述。 但正如我們都知道的佔位符attribut在IE中不起作用,所以我也使用jQuery Placeholder Enhanced使佔位符在IE中顯示。這工作。驗證失敗後佔位符消失使用jQuery驗證和jQuery佔位符增強

但在同一時間我使用jQuery驗證來驗證我的表單。當我按下提交按鈕並且驗證失敗時,IE中的所有佔位符都消失了。

我的驗證是這樣的:

$(".myForm").validate({ 
    submitHandler: function (form) { 
     $.post("/handlers/CustomHandler.ashx", $(".myForm").serialize(), 
      function (data) { 
       if (data.result.type == "message") { 
        $(".myForm").parent().html(data.result.data); 
       } 
       else if (data.result.type == "redirect") { 
        location.href = data.result.data; 
       } 
      } 
     ); 
    } 
}); 

我使用invalidHandler選項並焙燒placeholderEnhanced()嘗試 - 再函數是這樣的:

$(".myForm").validate({ 
    submitHandler: function (form) { 
     $.post("/handlers/CustomHandler.ashx", $(".myForm").serialize(), 
      function (data) { 
       if (data.result.type == "message") { 
        $(".myForm").parent().html(data.result.data); 
       } 
       else if (data.result.type == "redirect") { 
        location.href = data.result.data; 
       } 
      } 
     ); 
    }, 
    invalidHandler: function() { 
     if (!Modernizr.input.placeholder) { 
      $('input[placeholder], textarea[placeholder]').placeholderEnhanced(); 
     } 
    } 
}); 

但unfortanetly它不工作。 如果我複製粘貼此行:

$('input [placeholder],textarea [placeholder]')。placeholderEnhanced();

進入我的控制檯在IE瀏覽器,並在驗證後發現它發現了一些錯誤,佔位符再次顯示。 我也試過把警報(「有一個錯誤的形式」);在if語句內部,當按下表單中的提交按鈕時會顯示這個內容。

任何人都有一些線索可能是錯誤的,以及如何使IE中的佔位符在按下提交按鈕並且驗證無效後不會消失。

在此先感謝!

/金

回答

0

也許問題是在這段代碼內jquery.placeholder.js:

// Blank on submit -- prevents submitting with unintended value 
    this.form && $(this.form).submit(function() { 
     // $input.trigger('focus'); would be problematic 
     // because it actually focuses $input, leading 
     // to nasty behavior in mobile browsers 
     if ($input.hasClass('placeholder')) { 
     $input 
     .val('') 
     .removeClass('placeholder'); 
     } 
    }); 

觸發jquery.validate jquery的通行證的驗證方法後處理提交給該代碼。我註釋掉了這些代碼,佔位符在IE中停止了開放。我檢查服務器端的佔位符填充字段。但是,如果您想在提交之前清空這些值,則應該以某種方式防止在提交錯誤時調用此方法。如果我弄清楚究竟在哪裏,我會在這裏寫一條評論。