如何"恢复" onchange事件

时间:2017-08-30 13:48:50

标签: javascript onchange reset

我有一个textarea元素,并指定了onchange事件。事件函数验证textarea值,如果出现问题,必须先修复它,然后才能继续。我对这种情况有疑问:

1)用户输入值 2)他们在textarea =>外面点击onchanged被解雇了 3)验证失败,所以我显示一个警报,我打电话给$(" #lement")。focus()=>用户返回进行编辑 4)如果他们现在点击元素外部而没有任何文本修改,则不会触发onchange事件,这就是问题所在。

所以我需要"重置" onchange status - 以某种方式指定原始值,然后调用$(" #lement")。focus()。可以用JS做到这一点,还是我必须自己处理onblur事件?

3 个答案:

答案 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
        }
    });