2

我想要实现的是强制文本框以前缀(国家电话代码)开头并使其永久化,这意味着用户无法绕过它。例如,电话文本框应始终以“+45”开头,然后用户可以添加电话号码。如何以任何方式防止它删除代码?

到目前为止,我使用 jQuery 做了什么:

//attach event on phone text boxes
$(document).delegate(".phone", "keyup", function(event){

var target = $(this);

var value = target.val().trim();

if (value.indexOf(CONSTANTS.DANISH_PHONE_CODE) == -1) {
    //country code not found

    //if the user starts deleting the country code 
    if (value.indexOf("+") == 0){
        value = "";
    }

    //if the user types something in front of the country code, put the country code at the end
    value = value.replace(CONSTANTS.DANISH_PHONE_CODE, "");

    //phone doesn't start with +45
    value = CONSTANTS.DANISH_PHONE_CODE + value;

    target.val(value); 
}


});

但问题是用户可以删除加号,前缀会自动放在开头,所以我们将得到 +4545。你知道实现这一目标的优雅方法吗?谢谢。

4

3 回答 3

3

您可以绝对地将文本(在跨度中)放置在文本框上并为其添加左边距。

这样用户将无法删除它。但是您必须将其添加到服务器端。

于 2012-07-18T14:40:01.480 回答
3

在字段前添加 +45 作为静态 html。要求用户输入号码的“其余部分”(不是 +45)。

如有必要,请在保留值之前添加 +45 服务器端。同样,编辑时去掉+45。

于 2012-07-18T14:43:31.360 回答
0

JSFiddle 示例

这应该主动阻止他们删除“+45”,而不是在用户更改后尝试修复问题。按键时,确定字符位置,如果该位置在字符串中太早(即在“+45”内,而不是在它之后),则不允许按键,除非该键是向左或向右箭头键。

获得的资源:

http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea 在 JS/jQuery 中绑定箭头键

于 2012-07-18T14:49:11.580 回答