我有一个textarea元素,并指定了onchange事件。事件函数验证textarea值,如果出现问题,必须先修复它,然后才能继续。我对这种情况有疑问:
1)用户输入值 2)他们在textarea =>外面点击onchanged被解雇了 3)验证失败,所以我显示一个警报,我打电话给$(" #lement")。focus()=>用户返回进行编辑 4)如果他们现在点击元素外部而没有任何文本修改,则不会触发onchange事件,这就是问题所在。
所以我需要"重置" onchange status - 以某种方式指定原始值,然后调用$(" #lement")。focus()。可以用JS做到这一点,还是我必须自己处理onblur事件?
答案 0 :(得分:0)
尝试onkeyup事件而不是更改。您可能需要稍微更改验证
答案 1 :(得分:0)
一个简单的解决方法可能会这样做。
在onfocus处理程序中,保存当前值temporare,然后将val设置为空字符串,然后再将值设置为。
$("#element").on("focus", function() {
var val = $("#element").val();
$("#element").val("");
$("#element").val(val);
})
$("#element").focus()
是的,听onblur
并验证甚至是更好的解决方案,没有黑客/解决方法。
答案 2 :(得分:0)
onblur事件可以解决您的问题,因为每次元素失去焦点时都会触发它:
var layer = map.addLayer({
"id": layerName,
"type": "line",
"source": {
"type": "geojson",
"data": {
"type": "Feature",
"properties": {},
"geometry": {
"type": "LineString",
"coordinates": line
}
}
},
"layout": {
"line-join": "round",
"line-cap": "round"
},
"paint": {
"line-color": "red",
"line-width": 13
}
});