首页 > 解决方案 > 如何防止使用 jQuery 验证在我的输入字段中写入 url?

问题描述

我们正在使用https://jqueryvalidation.org/库来验证我们网站上的联系表格。

详细信息将发送至3rd party web service

jQuery("#contactform").validate({ // initialize the plugin
    rules: {
        name: {required:true},
        email: {required:true},
        phonenumber: {required:true}
    },
    submitHandler: function(form, evt) {
        evt.preventDefault();
        var name = jQuery('#name').val();
        var email = jQuery('#email').val();
        var phonenumber = jQuery('#phonenumber').val();
        var contactform_url = jQuery("#contactform").attr('action');

        jQuery.ajax({
            type: "POST",
            url: contactform_url,
            cache: false,
            data: {
                name: name,
                email: email,
                phonenumber: phonenumber
            },
            beforeSend: function() {
            }
        }).done(function(data, textStatus, jqXHR) {
        }).fail(function(jqXHR, textStatus, errorThrown) {
        });

    }
});

问题:当前验证无法阻止用户urlname输入字段中输入 a

所以var name = jQuery('#name').val();可以有一个值https://www.google.com/

您知道如何避免用户在我们的输入字段中输入 alink或至少将 url 转换为 a吗?urlnamestring

任何帮助是极大的赞赏。谢谢

标签: javascriptphpjqueryhtmlwordpress

解决方案


尝试使用以下代码希望它对您有用

$('#name').on('input', function() {
    var input=$(this);
    if (input.val().substring(0,4)=='www.'){input.val('http://www.'+input.val().substring(4));}
        var re = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;
        var is_name=re.test(input.val());
            if(is_name){
                alert('valid');
            }
        }
        else{
            alert('invalid');
        }
    });

你的第二个条件在这里填写

var url = "google.com";

var lastCom = url.slice(-3);

alert(lastCom); // "com"

推荐阅读