javascript - 如何从其他代码触发表单元素的 onchange 的一部分?

标签 javascript forms onchange

从 javascript 触发表单元素的 onchange 函数非常简单:

element.onchange();

但假设 onchange 是这样的:

<input id=foo type=checkbox onChange="function1(argA, argB); function2(argC);">

是否可以仅触发“function2(argC)”部分(如果存在)?

一种粗略的方法可能是以某种方式获取 onchange 函数作为文本,检查它以查看 function2 是否在那里,如果是,则将“function2(argC)”提供给 eval。

这段代码:

var thatInput = document.getelementbyid('foo');
alert(thatInput.onchange);

产量

function onchange(event) {
    function1(argA, argB); function2(argC);); 
}

在警报框中,但我不知道如何将其作为字符串进行操作。 thatInput.onchange 有一个名称属性,即“onchange”;它的长度为 1。这些似乎都没用。

最佳答案

您可以将这两个函数调用包装在父函数中,并使用可选参数来确定是否应调用 function2:

function handleChange(useFunction1, useFunction2) {
    if ( useFunction1 ) {
        function1(argA, argB);
    }

    if ( useFunction2 ) {
        function2(argC);
    }
}

// Calls function1 without calling function2
<input id=foo type=checkbox onChange="handleChange(true, false);">

// Calls function2 without calling function1
<input id=foo type=checkbox onChange="handleChange(false, true);">

// Calls both functions
<input id=foo type=checkbox onChange="handleChange(true, true);">

或者,如果您希望默认调用这两个函数,除非您另外手动指定:

function handleChange(useFunction1, useFunction2) {
    if ( useFunction1 === true || useFunction1 === undefined ) {
        function1(argA, argB);
    }

    if ( useFunction2 === true || useFunction2 === undefined ) {
        function2(argC);
    }
}

// Calls both functions by default
<input id=foo type=checkbox onChange="handleChange();">

关于javascript - 如何从其他代码触发表单元素的 onchange 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35474509/

相关文章:

javascript - float 条形图刻度线不显示

php - JSON-RPC和性能问题

javascript - 如何挂上字段类型文件?

angular - 当我们输入 [Angular] 时,如何检测输入字段的变化

javascript - 无法将事件绑定(bind)到多个 <select>,只能绑定(bind)第一个子元素

javascript - onchange 属性不会调用函数

javascript - Angular 指令中的一种绑定(bind)方式

JavaScript 元素着色仅在通过 document.writeln 的文本之后起作用

vb.net - 如何注意到表单上的任何更改

javascript - 使用 onkeyup 事件在输入表单的文本两侧添加方括号?