2015-06-08 90 views
4

我有一些麻煩,我使用 https://github.com/mailcheck/mailcheckJQuery的 - .VAL()返回舊值

使用此功能

   $('#email').on('keypress', function(event) { 
       $(this).mailcheck({ 
        suggested: function(element, suggestion) { 
         $('#email_check').html("Did you mean <b><i><a href='#' id='suggest_email'>" + suggestion.full + "</a></b></i>?"); 
         $('#suggest_email').on('click', function(event) { 
          event.preventDefault(); 
          $('#email').val($(this).text()); 
          $('#email_check').empty(); 
          $('.error_js').empty() 
         }); 
        }, 
        empty: function(element) { 
         $('#email_check').empty(); 
         $('.error_js').empty() 
        } 
       }); 
      }); 

但是,當腳本使用:

opts.email = this.val(); 

(該文件中的第263行https://github.com/mailcheck/mailcheck/blob/master/src/mailcheck.js

this.val()return th我的輸入的舊價值。 我試圖使用

this.attr("value"); 

this.prop("value"); 

同樣的問題。

當我做一個console.log(this);並在對象中尋找我的輸入值,這很好,它包含了很好的價值。

如何獲得正確的值呢? 這就是爲什麼我要求你的幫助。

謝謝。

回答

8

請勿使用keypress事件,因爲它在input中的新valuecharacter已註冊之前被觸發。使用keyup代替

$('#email').on('keyup', function(event) { 
       $(this).mailcheck({ 
        suggested: function(element, suggestion) { 
         $('#email_check').html("Did you mean <b><i><a href='#' id='suggest_email'>" + suggestion.full + "</a></b></i>?"); 
         $('#suggest_email').on('click', function(event) { 
          event.preventDefault(); 
          $('#email').val($(this).text()); 
          $('#email_check').empty(); 
          $('.error_js').empty() 
         }); 
        }, 
        empty: function(element) { 
         $('#email_check').empty(); 
         $('.error_js').empty() 
        } 
       }); 
      }); 
+0

:o謝謝你說得對:D試試吧,這就是工作,謝謝 – kaldoran

+0

@kaldoran,很高興幫助:) – AmmarCSE

+0

@kaldoran,不要忘記標記最有用的答案,以接受指導未來的讀者這個職位 – AmmarCSE

1

控制檯日誌對象表明當時的對象屬性的對象首次擴大,所以你的情況的價值還沒有被當按鍵事件觸發設置,但是當你日後讀取在控制檯中,它已設置。要查看對象屬性的實際當前狀態,請將記錄爲屬性而不是整個對象

keyup事件應該可以正常工作。