我有一个带有所需属性设置输入的表单。当我提交表单并且输入为空时,它周围会显示一个红色边框。
我现在正在寻找一个javascript方法来删除它,并将输入的显示重置为初始状态。
重新设置并再次提交后,应再次检查输入并显示红色边框(如果为空)。因此,我认为将css设置为:required并不能提供所需的解决方案。
快速解释我的问题:
jQuery(function() {
jQuery('#reset').click(function() {
//Clear red border of input
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myform">
<input id="myinput" required>
<input type="submit" value="submit">
</form>
<button id="reset">reset</button>
&#13;
单击重置后,表单应显示为刚刚加载页面时。
修改 我在firefox中测试了这个。在chrome中,当元素聚焦时,会自动删除样式。但是,我仍然在寻找一个js解决方案来删除该消息。
答案 0 :(得分:1)
修改,更新
我想重置样式,而不是阻止它发生(当我没有 专注于它。)
您可以在className
添加#myinput
到box-shadow
元素,将none
设置为border
,将inherit
设置为click
在#reset
元素上。移除className
上的focus
或change
元素上的#myinput
,取消您是否希望box-shadow
和border
移除focus
无效输入时,或用户输入值时。
.reset:-moz-ui-invalid:not(output) {
box-shadow: none;
border: 1px solid inherit;
}
提交时,它会显示一条消息,如&#34;此字段是必需的&#34;。这个 当我解开时删除,但我正在寻找一个删除的js方法 那条消息。
您可以使用带有空格字符作为参数的invalid
事件.setCustomValidity(" ")
,在处理程序中调用event.target
。
只有当css
获得焦点并且输入无效时,您才能使用:focus
:invalid
,border
将red
设置为input
。如果输入值为空字符串或仅为空格字符,html
可以在pattern
RegExp
添加\w+
属性以将input
设置为无效
jQuery(document).ready(function() {
jQuery("#reset").click(function() {
jQuery("#myinput").addClass("reset")
});
jQuery("#myinput").focus(function() {
jQuery(this).removeClass("reset")
})
.on("invalid", function(e) {
e.target.setCustomValidity(" ");
})
})
&#13;
#myinput:focus:invalid {
border: 1px solid red;
}
#myinput:focus {
outline: none;
}
.reset:-moz-ui-invalid:not(output) {
box-shadow: none;
border: 1px solid inherit;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myform">
<input id="myinput" pattern="\w+" type="text" value="" required/>
<input type="submit" value="submit" />
</form>
<button id="reset">reset</button>
&#13;
答案 1 :(得分:1)
我不能在这里重现它。但可能你的问题是pseudo-class应用于输入。
鉴于您无法删除伪类,也许您可以覆盖该样式。类似的东西:
$(document).ready(function() {
//check the state of the checkox
$(".showinvoice").is(':checked') {
var stats = $(this).attr('data-id');
$("#"+stats).css('display','block');
}
//check the code only when the click button is triggered
$(".showinvoice").click(function(e) {
var getStudent = $(this).attr('data-id');
if ($(this).is(':checked')) {
$("#"+getStudent).css('display','block');
} else {
$("#"+getStudent).css('display','none');
}
});
});
如果您只需在单击重置按钮时应用样式,请将样式添加到您自己的类中,并在需要时添加/删除该类。
答案 2 :(得分:0)
initial
关键字使CSS属性采用浏览器的默认样式,如果这是您正在寻找的...
jQuery(function() {
jQuery('#reset').click(function() {
//Clear red border of input
jQuery('#myinput').css('border-color', 'initial');
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style type="text/css">
#myinput {
border-color: red;
}
</style>
<form id="myform">
<input id="myinput" required>
<input type="submit" value="submit">
</form>
<button id="reset">reset</button>
&#13;