我有一个移动号码的输入字段,我希望在输入字段“+91”内部始终对用户可见..意味着他无法删除它。
所以我打算在INPUT FIELD的值等于+91
时禁用BACKSPACE和DELETE按钮在FIREFOX中,startegy对我来说很好,但它全都搞砸了。
我google了很多但是却找不到任何在CHROME中禁用Backspace的成功代码。 :(
这是我的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中做同样的事情
答案 0 :(得分: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;
}
答案 1 :(得分:0)
用户仍然可以点击鼠标或移动光标并编辑 +91 字符串。
我建议您将.keyup
和.change
处理程序绑定到您的输入,然后检查它是否包含您的前缀(请注意,jQuery会更容易)。像这样:
$('#your_input_id').on('keyup change', function() {
if ( $(this).val().indexof('+91') != 0) $(this).val('+91');
});
答案 2 :(得分: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;
}
});
<强> Fiddle DEMO 强>
答案 3 :(得分: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;