JQuery Slider更改事件和加载功能

问题描述 投票:0回答:2

我有一个价格滑块,想要在用户更改价格滑块时重新加载内容。但是,当事件被触发并且加载功能生效时,我会收到以下错误

TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement.

这是我的代码

    $(".range-filter").on('slidechange', function(){

    var formdata = $("#filterList").serializeObject();
    var attrfilter = $("#filterList").find('input[name^=attrfilter]:checked');
    alert("yey");

    $("#productList").load(
        url,
        { 
            formdata: formdata,
            attrfilter: attrfilter
        },
        function(responseText, statusText, xhr){
            if(statusText == "success")
                return;
            if(statusText == "error")
                return;
        }
    );
});

为什么这会产生冲突?我应该使用正常的ajax函数吗?

javascript jquery ajax load
2个回答
0
投票

记录formdataattrfliter以查看它们是否是可以在对象中给出的有效值(加载函数中的第二个参数)作为Ajax调用的数据发送。

var attrfilter = $("#filterList").find('input[name^=attrfilter]:checked');

我相信上面这一行正在产生问题。 attrfilter将是jQuery DOM元素对象而不是truefalse,我想你会想要传入Ajax调用的数据。

你能做的是:

var attrfilter = $("#filterList").find('input[name^=attrfilter]').prop("checked")
// will return true or false

另请参阅:

TypeError: stepUp called on an object that does not implement interface HTMLInputElement

TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement


0
投票

是的,我忘了映射这样的值:

        attrfilter = $.map(attrfilter, function(element) 
    {
        var start = element.name.indexOf('[')+1;
        var end = element.name.indexOf(']');
        return {id: element.name.substring(start, end), value: element.value};
    });
© www.soinside.com 2019 - 2024. All rights reserved.