我的目标是只在输入为INVALID时才清除输入类型文本框。 我们假设我的文本框最大值为200
<input id="textbox" type = "text" max="200" runat="server">
所以,让我说我输入150这样它有效,因此如果我再次关注它,它将保持其值150 但是,如果我输入大于200,我的文本框上会有一个红色的边框颜色,并专注于另一个文本框(它在我当前的代码上工作),如果我再次关注它,我想清除它的价值。
我想做这样的事情。
input:invalid {
box-shadow: 0 0 1px 3px #e74c3c;
}
input:focus:invalid {
textbox.value = "" (i know this will not work,
but i wanna do something like this but how?)
}
请注意,我有多个文本框,其中包含不同的最大值和最小值,而不仅仅是一个。
答案 0 :(得分:1)
请尝试这个纯JavaScript:
function myFunction(control,max,min){
var val= Number(control.value);
if(val>max || val<min){
control.value="";
}
}
&#13;
<input id="textbox" type = "text" max="200" onFocus="myFunction(this,250,100)">
&#13;
假设您的最大值为250,最小值为100
答案 1 :(得分:1)
您可以使用ValidityState界面来检查每个输入字段的状态。首先,你需要听onfocus
事件。例如:
var form = document.querySelector('form'),
elements = form.querySelectorAll('input'),
i;
for (i = 0; i < elements.length; i++) {
elements[i].addEventListener('focus', function() {
if (!this.validity.valid) {
this.value = '';
}
}, false);
}
答案 2 :(得分:1)
我认为这就是你的追求,一旦达到max
input
字符数,它就会变红
此时它还会关注一个单独的textbox
,其中有光标,用户可以继续键入,然后使用自己的max
字符值,然后再将其变为红色。
如果用户点击了第一个变为红色的textbox
,它将被清除,下面的代码可以同时清除第二个textbox
。
$(document).ready(function(){
$(":input").on("focus keyup", function(){
var max = $(this).attr("max");
var current = $(this).val().length;
if(current < max){
$(this).css({"border" : "1px solid blue", "outline" : "none"});
}else{
$(this).css({"border" : "1px solid red", "outline" : "none"});
$(this).focus(function(){
$(this).val(" ").focus();
//add this if you want the overflow textbox to be cleared aswell
//$("#overflow").val(" ").css({"border" : "", "outline" : "none"});
});
$("#overflow").focus();
}
});
});
您可以在行动HERE
中看到它希望这有帮助
答案 3 :(得分:0)
使用javascript:
<input id="textbox" type = "text" max="200" onFocus="validate(this)">
时:
function validate(control){
var val= parseInt(control.value);
if(val>200){
control.value="";
}
}
答案 4 :(得分:0)
你可以使用jquery和绑定焦点,如
$('#textbox').bind('focus', function() {
if ( $('#textbox').val().length>200 ) {
$('#textbox').val('');
}
});
也可以绑定keyup事件,它会在用户输入200以上时清除文本框。
$('#textbox').bind('keyup', function(e) {
if ( $('#textbox').val().length>200 ) {
$('#textbox').val('');
}
});
答案 5 :(得分:0)
答案 6 :(得分:0)
<input id="textbox" type = "text" max="200" runat="server">
在Jquery中:
$("#textbox-id").focus(function(){
if($(this).val() > 200)
{
$(this).val("");
$(this).css("border","1px solid red");
}
});