javascript - 在包含的文件中发布后重新选择复选框

标签 javascript jquery asp.net

我有页面 Search.asp(下面的代码)。和包含 Search.asp 的 Filtered.asp。

             <%
                Dim CheckForCheckboxes
                CheckForCheckboxes = Request.form("chkBoxes")
                response.write "CheckForCheckboxes" & CheckForCheckboxes
                %>    
                <div  id="ExSearch" name="ExSearch" >
                    <script>
  // on page load check if this page called from POST and have passed checkboxes to select                  
                    var str = '<%=CheckForCheckboxes%>'; // {"Make[]":["AIXAM","CADILLAC","JEEP"],"selCountry[]":["5","4","8"]}
                    if (!str || str.length === 0) {} else {
                        var Checked = JSON.parse(str); 
// alert works here
        // This one not work
                        $("#ExSearch").find('div.list input[type=radio], input[type=checkbox],div.selector select').each(function () {
// alert do not work here
                            var $el = $(this);
                            var name = $el.attr('name');
                            var value = $el.attr('value');
                            if (Checked[name] && Checked[name].indexOf(value) !== -1 ) {$el.prop('checked', true);}
                        });
                    };
                    
     // from here function which select checkboxes and hold them in hidden input field before submit, on submit pass this object with form               
                    $(function() {
                    
                        $('div.list input[type=checkbox], input[type=radio]').on('change',onValueChange);     
                        $('div.selector select').on('change', onValueChange);
                    
                        function onValueChange() {      
                                var Checked = {};
                                var Selected = {};
                                
                            // Hold all checkboxes
                                $('div.list input[type=radio]:checked, input[type=checkbox]:checked').each(function () {
                                    var $el = $(this);
                                    var name = $el.attr('name');
                                    if (typeof (Checked[name]) === 'undefined') {Checked[name] = [];}
                                    Checked[name].push($el.val());
                                });
                            // Hold all dropdowns
                                $('div.list select').each(function () {
                                    var $el = $(this);
                                    var name = $el.attr('name');
                                    if (!!$el.val()) {Selected[name] = $el.val();}
                                });
                    
                        // Put all together to POST 
                            $.ajax({
                                url: '/Search.asp',
                                type: 'POST',
                                data: $.param(Selected) + "&" + $.param(Checked),
                                dataType: 'text',
                                success: function (data) {
            // Put response data to page and reselect checkboxes, this works good
                                    $("#ExSearch").html(data).find('div.list input[type=radio], input[type=checkbox],div.selector select').each(function () {
                                        var $el = $(this);
                                        var name = $el.attr('name');
                                        var value = $el.attr('value');
                                        if (Checked[name] && Checked[name].indexOf(value) !== -1 ) {$el.prop('checked', true);}
                                        if (Selected[name]) {$el.val(Selected[name]);}
                                    });
    // Hold converted object to string values
                                    $("<input type='hidden' value='' />").attr("id", "chkBoxes").attr("name", "chkBoxes").attr("value", JSON.stringify(Checked)).prependTo("#ajaxform");
                                }
                            });
                        };
                    });
                    
                    </script>   
                    
                    <form name="ajaxform" id="ajaxform" action="Filtered.asp" method="POST">
                    </form>
                    </div>

因此,如果页面 Search.asp 启动,我检查对象是否通过表单发布方法传递,如果传递,我需要选择该对象中的复选框。 所以我创建对象,然后使用 Json.stringify 将其转换为字符串,然后捕获表单发布字符串并使用 JSON.parse 转换回对象

所以一切看起来都很好,但复选框没有选中,也没有出现错误。

现在出了什么问题?

最佳答案

请注意您的代码首先加载什么,然后加载所有 div 所以 $("#ExSearch").find(找不到任何复选框。

试着把你的<script></script> </form> 之后的代码

关于javascript - 在包含的文件中发布后重新选择复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265296/

相关文章:

javascript - 从迷你上传表单返回新文件名

javascript - 如何将 zingchart 实现到 angular2

javascript - CSS 无法对 Knockout 绘制的表格应用 dark-stripe 和 light-stripe

javascript - 如何最大化 Puppeteer 中的屏幕使用(非 headless )

javascript - AJAX:如何实时读取变化的(cronjob-)文件?

c# - 如何使用 Rhino 模拟设置 stub 和分配网络响应

javascript - 如何使用 mousedown 事件选中复选框?

javascript - window.on 加载函数只在一个页面上执行

asp.net - NVelocity 找不到模板

c# - 如何在列表框上设置多个 SelectedItem?