Javascript 禁用chrome中的退格
我有一个手机号码的输入字段,我希望在该输入字段中“+91”应该始终对用户可见。。意味着他不能抹掉它 所以我计划在输入字段的值等于+91时禁用BACKSPACE和DELETE按钮 startegy在FIREFOX中运行得很好,但在CHROME中却完全失败了 我在谷歌上搜索了很多,但找不到任何在CHROME中禁用退格的成功代码( 这是我的FIREFOX代码Javascript 禁用chrome中的退格,javascript,Javascript,我有一个手机号码的输入字段,我希望在该输入字段中“+91”应该始终对用户可见。。意味着他不能抹掉它 所以我计划在输入字段的值等于+91时禁用BACKSPACE和DELETE按钮 startegy在FIREFOX中运行得很好,但在CHROME中却完全失败了 我在谷歌上搜索了很多,但找不到任何在CHROME中禁用退格的成功代码( 这是我的FIREFOX代码 <script language="JavaScript" type="text/javascript"> document.on
<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>
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();
返回false;}
否则{
返回真值
}
}
函数集(e)
{e.value=“+91”;}
有人可以建议我如何在CHROME中执行相同的操作吗?用户仍然可以用鼠标单击或移动光标并编辑+91字符串 我建议您将
.keyup
和绑定到您的输入中,然后将
处理程序更改为您的输入,并检查它是否包含前缀(请注意,jQuery将更容易)。如下所示:
$('#your_input_id').on('keyup change', function() {
if ( $(this).val().indexof('+91') != 0) $(this).val('+91');
});
用户仍然可以用鼠标单击或移动光标并编辑+91字符串 我建议您将
.keyup
和绑定到您的输入中,然后将
处理程序更改为您的输入,并检查它是否包含前缀(请注意,jQuery将更容易)。如下所示:
$('#your_input_id').on('keyup change', function() {
if ( $(this).val().indexof('+91') != 0) $(this).val('+91');
});
用jQuery试试这个:
//HTML代码
<input type="text" name="phone" id="phone" class='phone' placeholder='+918888888888' value='' maxlength='13' />
$(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;
}
});
用jQuery试试这个:
//HTML代码
<input type="text" name="phone" id="phone" class='phone' placeholder='+918888888888' value='' maxlength='13' />
$(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;
}
});
不使用jQuery的解决方案是直接连接到更改/键控事件:
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;
不使用jQuery的解决方案是直接连接到更改/键控事件:
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;
正如我在一篇评论中所写的那样……甚至不用为这种方法操心。只是假装一下。这里有一个简单的方法(尽管你可能想调整字体、间距等): html:
<div class="prefix-wrapper">
<span class="prefix">+91</span>
<input type="text" value="">
</div>
.prefix-wrapper {
position: relative;
}
.prefix-wrapper .prefix {
position: absolute;
z-index: 2;
top: 3px;
left: 5px;
color: #999;
}
input {
padding-left: 30px;
}
演示:正如我在一篇评论中所写的那样……甚至不用为这种方法操心。只是假装一下。这里有一个简单的方法(尽管你可能想调整字体、间距等): html:
<div class="prefix-wrapper">
<span class="prefix">+91</span>
<input type="text" value="">
</div>
.prefix-wrapper {
position: relative;
}
.prefix-wrapper .prefix {
position: absolute;
z-index: 2;
top: 3px;
left: 5px;
color: #999;
}
input {
padding-left: 30px;
}
演示:这太疯狂了,这是一个非常疯狂的黑客行为。为什么不使用一个单独的文本框,通过任何必要的方式将其设置为只读,显示
+91
,并将其包含在您的逻辑中?我绝对保证有更好的方法来实现这一点。@Arran:我需要应用这个javascript检查,因为我正在为他开发网站。他只想要这个。在服务器端,我有更好的限制。@Arran:我承认这是疯狂的….:P但对此无能为力…只是假装…@FREAKENGINEER:什么样的愚蠢客户会特别要求这样一个神秘的要求?这是疯狂的,是一个严重的疯狂黑客。为什么不干脆有一个se操作文本框,通过任何必要的方式使其只读,以显示+91
,并将其包含在您的逻辑中?我绝对保证有更好的方法来实现这一点。@Arran:我需要应用此javascript检查,因为我正在为其开发网站的人。他只需要此项。在服务器端,我有更好的const雷茨。@Arran:我承认这是疯狂的….:P但对此无能为力…只是假装而已…@FREAKENGINEER:哪种愚蠢的客户会特别要求这样一个神秘的要求?它对我不起作用..有人能帮我找到一个在chrome中禁用backspce的代码吗..而这是一个非常明智的答案,而且是一个更好的实现在上,而不是试图捕捉退格/删除命令,用户似乎没有使用jQuery。@Rene Wolferink,谢谢。我只是认为jQuery是理所当然的,因为它经常被缓存,而且似乎无处不在:)虽然我也喜欢使用jQuery,但我认为至少知道它在下面是如何工作的还是好的,同时还要记住性能,尤其是在具有许多dom元素的页面上。你会惊讶地发现,在普通的老javascript中,有多少命令甚至没有使用更多的代码行这对我不起作用。。有谁能帮我一个在chrome中禁用backspce的代码吗?虽然这是一个非常明智的答案,而且是一个更好的实现,而不是试图捕获backspace/delete命令,但用户似乎没有使用jQuery。@Rene Wolferink谢谢。我只是认为jQuery是理所当然的,因为它经常被缓存,而且似乎无处不在:)虽然我也喜欢使用jQuery,但我认为至少知道它在底层是如何工作的还是好的,同时还要记住性能,特别是在有许多dom元素的页面上。你会惊讶地发现,在普通的老javascript中,有多少命令甚至没有使用更多的代码行