Javascript Ajax更新适用于收音机、复选框,但不适用于按钮
单击时,我希望表单根据单击的按钮进行处理和更新 html: processing.jsJavascript Ajax更新适用于收音机、复选框,但不适用于按钮,javascript,ajax,Javascript,Ajax,单击时,我希望表单根据单击的按钮进行处理和更新 html: processing.js chooseDonate: function(updatefield) { this.set('updatefield', updatefield); var that = this; $.post('index.php?route=info/updateinfo', this.toJSON(), function(data) { qc.event.trigge
chooseDonate: function(updatefield) {
this.set('updatefield', updatefield);
var that = this;
$.post('index.php?route=info/updateinfo', this.toJSON(), function(data) {
qc.event.trigger('updateAll', data);
that.updateForm(data);
}, 'json').error();
},
按钮的处理方式是否不同?无法理解为什么收音机/复选框工作,但按钮不工作。如果您的
按钮在表单中,则它可能正在提交它(这是它们的默认行为)
尝试添加类型属性以告知浏览器您不希望发生这种情况:
<button name="updatefield" id="updatefield" class="chooseit" type="button">5.00</button>
5.00
如果您的按钮位于表单中,则它可能正在提交它(这是它们的默认行为)
尝试添加类型属性以告知浏览器您不希望发生这种情况:
<button name="updatefield" id="updatefield" class="chooseit" type="button">5.00</button>
5.00
您需要为按钮指定如下值:
<button name="updatefield" id="updatefield" class="chooseit" type="button" value="5.00">5.00</button>
5.00
您需要为按钮指定如下值:
<button name="updatefield" id="updatefield" class="chooseit" type="button" value="5.00">5.00</button>
5.00
我不熟悉您使用的框架。如果我理解事件:{'click button.chooseit':'chooseit',}
您将单击绑定到名为chooseit
的函数。看到这个功能也很好
但要回答你的问题“按钮的处理方式不同吗?”,这取决于按钮的类型。有
,
,
,
,
,
,
和
。如果type=“submit”
或type=“image”
提交表单。如果type=“reset”
表单中的控件将重置为其初始值。如果type=“menu”
将显示通过其指定的
-元素定义的弹出菜单。如果type=“button”
除非添加了单击处理程序,否则不会发生任何特殊情况
对于您正在尝试做的事情,纯javascript没有区别。我在下面添加了一个示例,其中我使用
、
、
、
和
,它们都使用相同的函数将
的值设置为最新单击的值。(type=“checkbox”
获得特殊处理,因为可以单击它取消选中)
因此,要找出问题所在,您需要深入研究您的框架,看看它在做什么。一个常见的错误是表单被提交,并且它可能发生得太快以至于看起来什么都没有发生。例如,如果在浏览器开发人员控制台中启用“粘滞日志”,则可以检测到这种情况,这样即使页面重新加载,日志也会保留
var output=document.getElementById('output');
函数setOutput(事件){
var值=此值;
如果(this.type==='checkbox'){
如果(!this.checked)值=“”;
}
output.value=值;
}
document.querySelectorAll('input,button')。forEach(
功能(elem){
元素addEventListener('单击',设置输出);
}
);
document.querySelectorAll('select').forEach(
功能(elem){
元素addEventListener('change',setOutput);
}
);代码>
字段集{
显示:内联块;
宽度:150px;
高度:50px;
垂直对齐:顶部;
保证金:0;
填充:0;
}
字段集p{
保证金:0;
填充:0;
字号:80%;
}
在这种情况下输入元素的类型无关紧要的概念证明
输入类型=“收音机”
5.
10
20
输入类型=“复选框”
5.
10
20
输入类型=“按钮”
按钮类型=“按钮”
5.
10
20
挑选
--选择值---
5.
10
20
上次选择的值:
我不熟悉您使用的框架。如果我理解事件:{'click button.chooseit':'chooseit',}
您将单击绑定到名为chooseit
的函数。看到这个功能也很好
但要回答你的问题“按钮的处理方式不同吗?”,这取决于按钮的类型。有
,
,
,
,
,
,
和
。如果type=“submit”
或type=“image”
提交表单。如果type=“reset”
表单中的控件将重置为其初始值。如果type=“menu”
将显示通过其指定的
-元素定义的弹出菜单。如果type=“button”
除非添加了单击处理程序,否则不会发生任何特殊情况
对于您正在尝试做的事情,纯javascript没有区别。我在下面添加了一个示例,其中我使用
、
、
、
和
,它们都使用相同的函数将
的值设置为最新单击的值。(type=“checkbox”
获得特殊处理,因为可以单击它取消选中)
因此,要找出问题所在,您需要深入研究您的框架,看看它在做什么。一个常见的错误是表单被提交,并且它可能发生得太快以至于看起来什么都没有发生。例如,如果在浏览器开发人员控制台中启用“粘滞日志”,则可以检测到这种情况,这样即使页面重新加载,日志也会保留
var output=document.getElementById('output');
函数setOutput(事件){
var值=此值;
如果(this.type==='checkbox'){
如果(!this.checked)值=“”;
}
output.value=值;
}
document.querySelectorAll('input,button')。forEach(
功能(elem){
元素addEventListener('单击',设置输出);
}
);
document.querySelectorAll('select').forEach(
功能(elem){
元素addEventListener('change',setOutput);
}
);代码>
字段集{
显示:内联块;
宽度:150px;
高度:50px;
垂直对齐:顶部;
保证金:0;
填充:0;
}
字段集p{
保证金:0;
填充:0;
字号:80%;
}
在这种情况下输入元素的类型无关紧要的概念证明
输入类型=“收音机”
5.
10
20
输入类型=”
<button name="updatefield" id="updatefield" class="chooseit" type="button" value="5.00">5.00</button>