Jquery 限制文本字段中的用户输入以确认模式

Jquery 限制文本字段中的用户输入以确认模式,jquery,Jquery,我在jsp中有一个id为countryCode的文本字段,用于输入电话号码的国家代码。 用户应能够以数字或带+号前缀的数字形式输入国家代码。 例如:91或+91或1或+1等。。 请建议使用jquery函数来限制用户输入时的i/p,以仅接受此模式 尝试使用以下代码 $('input[id="countryCode"]').bind('keypress', function (event) { var regex = new RegExp("^[+0-9\b]+$");

我在jsp中有一个id为countryCode的文本字段,用于输入电话号码的国家代码。 用户应能够以数字或带+号前缀的数字形式输入国家代码。 例如:91或+91或1或+1等。。 请建议使用jquery函数来限制用户输入时的i/p,以仅接受此模式

尝试使用以下代码

$('input[id="countryCode"]').bind('keypress', function (event) {
        var regex = new RegExp("^[+0-9\b]+$");
        var str= $( "#countryCode" ).val();
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key) || (key=="+" && str.length>0)) {
            event.preventDefault();
            return false;
        }
    });

但是输入91后,我无法输入+作为第一个字符

您需要比较键入的字符及其位置,以确定其是否有效。如果文本框中已经有内容,并且用户尝试在第一个位置键入
+
,则检查
(key==“+”&&str.length>0)
将失败

工作小提琴:

HTML:


您需要比较键入的字符及其位置,以确定其是否有效。如果文本框中已经有内容,并且用户尝试在第一个位置键入
+
,则检查
(key==“+”&&str.length>0)
将失败

工作小提琴:

HTML:


像这样使用jquery掩码mask min插件是否具有支持该要求的灵活性-用户可以输入+作为第一个字符,也可以不输入+作为第一个字符,其他字符将是没有长度限制的数字,如jquery 1.7,the.on()方法是将事件处理程序附加到文档的首选方法。即使更改为该方法也无法使用$('input[id=“countryCode”]”)。在('keypress',函数(事件){var regex=new RegExp(^[+0-9\b]+$);var str=$(“#countryCode”).val();var key=String.fromCharCode(!event.charCode?event.which:event.charCode);if(!regex.test(key)|(key=“+”&&str.length>0)){event.preventDefault();return false;});像这样使用jquery掩码mask min插件是否具有支持该要求的灵活性-用户可以输入+作为第一个字符,也可以不输入+作为第一个字符,其他字符将是没有长度限制的数字,如jquery 1.7,the.on()方法是将事件处理程序附加到文档的首选方法。即使更改为该方法也无法使用$('input[id=“countryCode”]”)。在('keypress',函数(事件){var regex=new RegExp(^[+0-9\b]+$);var str=$(“#countryCode”).val();var key=String.fromCharCode(!event.charCode?event.which:event.charCode);if(!regex.test(key)|(key=“+”&&str.length>0)){event.preventDefault();return false;});
<input id="countryCode" type="text">
$('input[id="countryCode"]').bind('keypress', function (event) {
    var regex = new RegExp("^[+0-9\b]+$");
    var str= $( "#countryCode" ).val();
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)){
        event.preventDefault();
        return false;
    }
    else if (str.length > 0) {
        if (key == "+" && $(this).getCursorPosition() != 0){
            event.preventDefault();
            return false;
        }
    }
});

// Borrowed from: http://www.fourthbottle.com/2014/03/how-to-get-cursor-position-in-textbox.html
 $.fn.getCursorPosition = function () {
    var pos = 0;
    var el = $(this).get(0);
    // IE Support
    if (document.selection) {
        el.focus();
        var Sel = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart('character', -el.value.length);
        pos = Sel.text.length - SelLength;
    }
    // Firefox support
    else if (el.selectionStart || el.selectionStart == '0')
        pos = el.selectionStart;
    return pos;
}