Javascript Ajax更新适用于收音机、复选框,但不适用于按钮

Javascript 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

单击时,我希望表单根据单击的按钮进行处理和更新

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.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>