jquery - 需要一个比.change更好的事件来触发验证逻辑

时间:2017-03-06 17:04:15

标签: javascript jquery validation

背景资料:

我的表单中包含一个名为“电话号码”的字段。当用户键入数字时,为了证明它是有效的,我会查找并根据某种算法返回任何匹配的国家/地区代码。 问题是我应该使用哪个事件来触发此查找/验证。现在,我已经在.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; 
    }
});

假设我无法更改此字段在表单上的显示位置,您是否可以建议更好的方法来进行此验证? 当他们点击提交时,我正在重复相同的验证逻辑,以便他们无法绕过它...但是在尝试提交数据之前能够“通知”它们会很高兴

3 个答案:

答案 0 :(得分:1)

您可以使用输入事件,该事件非常适用于文本框/输入框,并且每次输入内容时都会触发事件。

答案 1 :(得分:1)

使用

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

看看下面的问题,了解如何在键入输入时验证输入,而不是在离开输入字段后。

Validate html text input as it's typed

答案 2 :(得分:1)

你可以在' keyup'并且随着电话号码的推出,它将被验证。

struct GetName {
    virtual string getName(std::variant<int, string>) = 0;
};