2017-03-06 60 views
1

背景資料:jQuery的 - 需要一個更好的事件比.change觸發驗證邏輯

我有一個包含一個名爲「電話號碼」字段的表單。當用戶輸入一個數字,爲​​了證明它是有效的,我做一個查找並返回任何匹配的國家代碼基於一定的算法。 問題是我應該使用哪個事件來觸發此查找/驗證。現在,我已經在.change事件上觸發了,大部分情況都是可以的,除非當問題的字段是頁面上的最後一個字段。用戶不會注意到它執行查找的事實。

代碼:

$("#phone_num").change(function() { 
    $("#ratecenter").html(''); 
    var pstn = $(this).val(); 
    if (validphonenumber(pstn)) { 
      var query_data = {pstn_number: pstn,action:"find_ratecenter" }; 
      $.ajax({ 
      url: "/cgi-bin/phonenumbers", 
      dataType: "json", 
      data: query_data, 
      success: function(data) { 
       $("#ratecenter").html(data[0].ratecenter);    
       } 
      });//end ajax 
    } else { 
     $("#results").html("Invalid phonenumber. Please enter a '+' followed by a min of 7/max of 15 numbers"); 
     return false; 
    } 
}); 

假設我不能改變其中該字段顯示在表格上,你可以提出一個更好的辦法做到這一點的驗證? 當他們點擊提交時,我重複相同的驗證邏輯,所以他們無法繞過它......但它很高興能夠在提交數據之前「通知」他們

回答

1

你可以做到這一點在「KEYUP」和它將會在推出的電話號碼進行驗證。

​​
1

您可以使用輸入事件,該事件對於文本框/輸入框非常有效,並且每次鍵入內容時都會觸發該事件。

+1

由於OP會對這些輸入執行ajax請求,因此必須小心處理。 – rasmeister

1

使用

$(element).bind('input propertychange', function() { 
    //do stuff 
}); 

看看如何同時它作爲離開輸入域後,反對鍵入驗證輸入以下問題。

Validate html text input as it's typed