0

我有一个手机号码输入字段,我希望在该输入字段中“+91”应该一直对用户可见..意味着他不能删除它。

所以我计划在 INPUT FIELD 的值等于 +91 时禁用 BACKSPACE 和 DELETE 按钮

startegy 在 FIREFOX 中对我来说运行良好,但在 CHROME 中却完全搞砸了。

我用谷歌搜索了很多,但找不到任何在 CHROME 中禁用退格的成功代码。:(

这是我的 Firefox 代码

<script  language="JavaScript" type="text/javascript">
document.onkeypress = function(e)  // FireFox/Others 
    {
    var t=e.target.id;
    var kc=e.keyCode;
    if ((kc == 8 || kc == 46) && t == "phonen" && document.getElementById(t).value=="+91")
    { e.preventDefault();
        return false;}
    else {
                return true

    }
   }
   function sett(e)
   {e.value="+91";}
</script>

谁能建议我如何在 CHROME 中做同样的事情???

4

4 回答 4

3

正如我在评论中所写......甚至不要为这种方法而烦恼。就假装吧。这是一种简单的方法(尽管您可能想要调整字体、间距等):

html

<div class="prefix-wrapper">
  <span class="prefix">+91</span>
  <input type="text" value="">
</div>

CSS

.prefix-wrapper {
  position: relative;
}

.prefix-wrapper .prefix {
  position: absolute;
  z-index: 2;
  top: 3px;
  left: 5px;
  color: #999;
}

input {
  padding-left: 30px;
}

演示:http: //jsbin.com/elatot/1/

于 2013-06-12T09:33:17.147 回答
0

用户仍然可以用鼠标单击或移动光标并编辑+91字符串。

我建议您将处理程序绑定.keyup.change您的输入,然后检查它是否包含您的前缀(请注意,jQuery 会更容易)。像这样:

$('#your_input_id').on('keyup change', function() {
  if ( $(this).val().indexof('+91') != 0) $(this).val('+91');
});
于 2013-06-12T08:59:05.437 回答
0

不使用 jQuery 的解决方案是直接连接到 change/keyup 事件:

var checkPhone = function (e) {
    if (e.target.value.indexOf('+91') != 0) {
        e.target.value = '+91';
    }
}
var phoneElement = document.getElementById('phonen');
phoneElement.onchange = checkPhone;
phoneElement.onkeyup = checkPhone;
于 2013-06-12T09:22:45.713 回答
0

用 jQuery 试试这个:

// HTML 代码

<input type="text" name="phone" id="phone" class='phone' placeholder='+918888888888' value='' maxlength='13' />

// jQuery 代码

$(document).keydown(function (e) {
    var l = $('.phone').val().length;
    var elid = $(document.activeElement).hasClass('phone');
    if (e.keyCode === 8 && elid && l == 3) {
        return false;
    } else {
        return true;
    }
});

小提琴演示

于 2013-06-12T09:15:51.733 回答