Javascript 如何重置搜索表单中的特定表单元素?
我有一个搜索表单,其中包含不同的元素、复选框、选择、文本字段等。每次更改都伴随着一个ajax调用,该调用以计数器的形式获取结果的数量。我只想重置导致计数器返回值0的前一个元素 我在考虑跟踪变量中的每个更改,每次计数器计算为0时,我都会重置导致更改的元素。然而,我担心这会迫使我用大量的代码和跳跃来处理所有不同的元素Javascript 如何重置搜索表单中的特定表单元素?,javascript,jquery,Javascript,Jquery,我有一个搜索表单,其中包含不同的元素、复选框、选择、文本字段等。每次更改都伴随着一个ajax调用,该调用以计数器的形式获取结果的数量。我只想重置导致计数器返回值0的前一个元素 我在考虑跟踪变量中的每个更改,每次计数器计算为0时,我都会重置导致更改的元素。然而,我担心这会迫使我用大量的代码和跳跃来处理所有不同的元素 对于这个问题,有没有任何人都能想到的更优雅的解决方案?非常感谢您的帮助。您的AJAX模块可以返回一个JSON编码的字符串,其中包含导致此事件发生的数据(PHP函数:JSON_encod
对于这个问题,有没有任何人都能想到的更优雅的解决方案?非常感谢您的帮助。您的AJAX模块可以返回一个JSON编码的字符串,其中包含导致此事件发生的数据(PHP函数:JSON_encode),从那时起,您可以循环处理错误值,重置它们并显示更多信息。i、 e.“您的电子邮件似乎无效” PHP:参见JSON_编码 JavaScript:请参阅getElementsByTagName('input')(或textarea或select)
注意:对于select项,您可能更希望更改属性“selectedIndex”而不是“value”。我无法对您的问题进行评论,但是:如果我理解正确,有一个大表单,对任何元素的每次更改都会触发一个ajax调用,返回一个结果集 如果此结果集大小为零,则希望窗体重置为以前的值 这意味着,只需跟踪最后更改的值,然后重置 在这种情况下,您的
onchange
事件回调应该使用this
值来获取当前表单元素的值和ID。然后,当结果集返回时,如果没有行,则将存储的值设置回该元素
否则,如果表单是全局管理的,则始终可以通过调用.clone()
来存储它,然后调用.remove()
并.insert()
在结果集为空时返回克隆
PS:我知道这个解决方案不是很优雅:)我通过用
$("#form_id").on("change", function(event) {
//Event bubbling
type = $(event.target).get(0).type;
selector = $(event.target);
}
然后使用策略设计模式,我相应地重置每个可能的字段类型。文本字段的示例
var Fields = {
"text": {
resetAction: function(fieldSelector) {
fieldSelector.val('');
}
}
};
//To call the reset action for the type of field,
Fields[type].resetAction(selector);
我必须为隐藏字段触发一个更改事件,使其更改也冒泡。您能提供表单和js的代码示例吗?这实际上为我指明了正确的方向。检查我的答案。