如何测试onchange值?

时间:2016-06-17 11:56:20

标签: javascript jquery

这会产生错误并破坏功能。

  

错误说"无法读取属性' onchange'未定义"即使我试图测试onchange以防止出错。

这是我的功能:

function ClearAndRun(element) {
   $el = $("select, input");
   $next = $el.eq($el.index(element) + 1);
   for(i=$el.index($next);i<$el.length;i++) {
     if($next.get(0).onchange != null) {
        $next.val("");
        $next.change;
     }
   $next = $el.eq($el.index(element) + i);
   }
}

<input onchange="ClearAndRun(this)">

我尝试了一些不同的测试onchange值,他们似乎都给出了这个错误。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

使用set /p$.each未拨打.change,您需要括号

change

答案 1 :(得分:0)

  

我想将值设置为空

这会将每个std::vector<int> vec{1, 2}; std::vector<std::reference_wrapper<int>> refs(vec.begin(), vec.end()); vec[1] = 3; std::copy(refs.begin(), refs.end(), std::ostream_iterator<int>(std::cout, " ")); / select

的值重置为
input
  

...并运行他们的onchange函数,这些函数准备好无需回答

这将被调用,因为您已在其中一个元素上调用$element.each(function() { if ($(this).val() != null) { $(this).val(""); $(this).change(); } });

.change()

听起来,当为任何元素调用$element.on('change', function() { $('the_form').reset() }); 方法时,您希望重置表单...

  

如果重置这些答案并且运行了onchange函数,它基本上会重置表单...

(取自here

的示例

据我了解你的问题,我不确定你什么时候开始谈论其他儿童元素......

  

...这可能会根据他们的答案隐藏或显示跨度

但是,此代码会重置.change() / input的所有值并调用其select方法。我能看到的问题是,对于每个元素,你重置的形式会给DOM带来额外的压力并且不理想。

N.B:如果您没有设置这些元素的值,则可以使用.change()来检查元素内的文本

HTML text()属性似乎只适用于onchange个元素。从参考文献中我无法看到select是否可以实现这一点......

  

当用户更改元素的选定选项时执行JavaScript:

(Credit w3schools

答案 2 :(得分:0)

所以这就是我最终需要的东西:

function ClearAndRunFuncs(element) {
   $el = $("input[name!=''][onchange!=''], select[name!=''][onchange!='']");
   for(i=$el.index(element)+1;i<$el.length;i++) {
            $el.eq(i).val("");
            $el.eq(i).change();
   }
}

我没有意识到你可以根据选择器上的属性设置条件。因此,这可以防止出现任何错误,因为此功能正在处理更改中缺少的字段,甚至名称值都没有。