使用 jQuery 或 Zend Form 的电话号码验证器/过滤器?

发布于 2024-08-11 22:24:35 字数 371 浏览 2 评论 0原文

我正在考虑向 Zend Framework 应用程序的电话号码字段添加一些验证/过滤。不确定这是否是我应该做的事情。

我认为拥有这样的功能可能会对用户有所帮助,这样我就可以强制执行特定的显示格式。我不确定电话号码的格式是否应该存储在数据库中,或者何时从数据库中检索。我不想对此太严格,因为它并不是那么重要。我只是想阻止一半人输入 123.456.7890 作为电话号码格式,而另一半人输入 (123) 456-7890 作为其他格式。我希望电话号码列表看起来一致。那么也许我应该使用一些 JavaScript 来帮助用户输入他们的号码?也许有一个 jQuery 插件已经可以做到这一点,我可以将它与我的 Zend Form 集成?

你怎么认为?

I'm thinking about adding some validation/filtering to the phone number field of my Zend Framework application. Not sure if this is something I should do or not.

I thought it might be helpful for users to have such a feature so I could enforce a particular display format. I'm not sure if the formatting of the phone number should be stored in the database, or when it is retrieved from the database. I don't want to be too strict about this because it's not really that important. I just wanted to prevent half the people from entering 123.456.7890 as their phone number format and the other half entering (123) 456-7890 as the other format. I want the listing of phone numbers to look consistent. So maybe I should use some javascript to help the user enter their number? Maybe there is a jQuery plugin that already does that and I can integrate it with my Zend Form?

What do you think?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

メ斷腸人バ 2024-08-18 22:24:35

我最喜欢的推荐之一:

JQuery 屏蔽输入插件

Screenshot

One of my favorite recommendations:

JQuery Masked Input Plug-in

Screenshot

月野兔 2024-08-18 22:24:35

您仍然希望在后端强制执行验证,因为 JavaScript 验证可以轻松绕过。这是我的验证插件,它强制 +1.1234567890:

class App_Validate_Phone extends Zend_Validate_Abstract
{
    const NOT_VALID = 'phoneInvalid';

    protected $_messageTemplates = array(
        self::NOT_VALID => "Phone number '%value%' must be in the format +COUNTRYCODE.PHONENUMBER. Example: +1.4071234567"
    );

    public function isValid($value)
    {
        $this->_setValue($value);

        if (!preg_match('/^\+([0-9]+)\.([0-9]+)$/',$value)) {
            $this->_error(self::NOT_VALID);
            return false;
        }

        return true;
    }
}

如果您搜索电话验证正则表达式,您可以找到任意数量的验证正则表达式,您可以在 preg_match() 中替换您的特定需要。

You will still want to enforce validation on the back end as javascript validation can be bypassed easily. This is my validation plugin which forces +1.1234567890:

class App_Validate_Phone extends Zend_Validate_Abstract
{
    const NOT_VALID = 'phoneInvalid';

    protected $_messageTemplates = array(
        self::NOT_VALID => "Phone number '%value%' must be in the format +COUNTRYCODE.PHONENUMBER. Example: +1.4071234567"
    );

    public function isValid($value)
    {
        $this->_setValue($value);

        if (!preg_match('/^\+([0-9]+)\.([0-9]+)$/',$value)) {
            $this->_error(self::NOT_VALID);
            return false;
        }

        return true;
    }
}

If you google phone validation regex you can find any number of validation regular expressions which you can substitute in preg_match() for your particular needs.

┊风居住的梦幻卍 2024-08-18 22:24:35

您不需要为手机创建自定义验证器。 Zend 有一个使用本地化的电话验证器的提案。虽然尚未准备好,但您可以使用正则表达式验证器:

//Add element for phoneNumber1
$this->addElement('text', 'phoneNumber1', array(
    'label'     =>  'Primary Phone Number',
    'required'  =>  false,
));
$phone1 = $this->getElement('phoneNumber1');
$phone1->addValidator('regex', false, array('pattern' => '^[2-9][0-9]{2}-[0-9]{3}-[0-9{4}
, 'messages' => 'Enter a valid Phone Number'));

You dont need to create a custom validator to phones. Zend has a proposal for a phone validator using localization. Whilst not ready yet, you can use the Regex validator:

//Add element for phoneNumber1
$this->addElement('text', 'phoneNumber1', array(
    'label'     =>  'Primary Phone Number',
    'required'  =>  false,
));
$phone1 = $this->getElement('phoneNumber1');
$phone1->addValidator('regex', false, array('pattern' => '^[2-9][0-9]{2}-[0-9]{3}-[0-9{4}
, 'messages' => 'Enter a valid Phone Number'));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文