0

我有一个自动提交和更新同一页面的表单。我有一个更改按钮值的 java 脚本函数,但 AJAX 不断发布旧值。

AJAX

$.ajax({
            type: 'POST',
            url: this.action,
            data: $('form').serialize()
});

查询

function changevalue()
{
 $('#button').attr('value', 'grapes');
}

形式

form...
<input type="submit"  name="button" id="button" value="apple" onclick="changevalue();" />
...

按钮将显示新更改的单词,但后面的代码(控制器)显示旧变量。

4

2 回答 2

3

.val()使用 jQuery 的方法更改值。

function changevalue() {
    $('#button').val('grapes');
}

从 jQuery 1.6.0 开始,该.attr()方法正确地停止访问和更改属性值,它只更改属性。

于 2012-06-26T18:27:54.197 回答
1

您没有取消单击该按钮的提交按钮的默认操作,它正在刷新页面,这意味着默认值将重新出现。

使用代码添加事件处理程序,而不是内联标记。

<input type="submit"  name="button" id="button" value="apple" />

<script>
    $( function() {  
        $("#button").on("click", changevalue); //assign the click for 1.7+
        //$("#button").click( changevalue); //assign the click for 1.6.x and below
    });

    function changevalue(evt) {
        evt.preventDefault(); //cancel the click action
        $(this).val("grapes");  //set the value with val, do not use attr
    }
</script>

并从有关序列化的文档中

注意:只有“成功的控件”被序列化为字符串。由于未使用按钮提交表单,因此没有序列化提交按钮值。对于要包含在序列化字符串中的表单元素的值,该元素必须具有 name 属性。来自复选框和单选按钮(“单选”或“复选框”类型的输入)的值仅在它们被选中时才被包括在内。来自文件选择元素的数据未序列化。

于 2012-06-26T18:33:37.483 回答