簡體   English   中英

在jQuery中使用.change()進行驗證

[英]using .change() in jQuery for validation

所以我正在使用jQuery的.change()函數來觸發對該特定表中其他字段的驗證。 請參閱下面的代碼...。我遇到的問題是:如果我在輸入字段中鍵入內容,然后擦除它,它仍然認為它已更改,並且需要其他字段。 我可以看到這對用戶來說是個問題,反正還有嗎?

ps class =“ R”來自我的自定義驗證,並將其設置為必填字段。

$('#t1 :input').change(function(){                                          

        var $t1Input = $('#t1Table :input:not(input[type=hidden])');
        var hasData = false;


   $t1Input.each(function(){
            if($(this).val().length > 0){
                hasDatat1 = true;
                return false;
            }
        });
        // Change class of input field to "R" if something has been changed 
            if(hasDatat1)
                $t1Input.addClass('R');                                                                  
            else
                $t1Input.removeClass('R');
        });

您可以使用此處概述的方法來檢測“實際”更改: 在更改之前獲取select(下拉)的值

嘗試這個:

$('#t1 :input').change(function(){
    if ($(this).val() == '') return;

您可以使用JQuery的.data()函數存儲值並檢查代碼中的實際更改

如果我沒看錯你的問題,這將驗證每個單獨的輸入,而不會在每次更改時都驗證t1Table中的所有輸入。

$('#t1 :input:not(input[type=hidden])').change( function() {
    if( $(this).val() == '' )  { $(this).addClass('R'); }
    else { $(this).removeClass('R'); }
} );

我知道您沒有問這個問題,但是您提到了“用戶問題”,因此我正在閱讀您的問題。 為了提高可用性,我並不是說要切換到Dojo而不是JQuery。 實際上,我最終使用JQuery多於Dojo,因為似乎有更多的追隨者。 但是,Dojo具有驗證表單數據並為用戶提供即時反饋而又不煩人的一種很好的方法。 您可能想要查看一下有關如何為用戶提供良好的UI流程的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM