【问题标题】:jQuery getting value of ASP.net hidden textbox valuejQuery 获取 ASP.net 隐藏文本框值的值
【发布时间】:2013-11-11 17:23:09
【问题描述】:

这个问题有点奇怪,我很好奇是否有人知道发生了什么。您可以获得 CSS、HTMl 和 JS here,但我在本地机器上看到的行为与小提琴中的不同。目的是用户将单击 div 内的 span 标签,然后会弹出一个模式(我还没有做到),用户将能够编辑和保存更改。您可以在更新函数中看到一个文本框附加到 #hidden 元素。虽然我从未设置文本框的值,但当单击跨度标记时,文本框会附加到元素上,其中(几乎)视图状态隐藏的 ASP.net 字段的整个值。我将隐藏元素的 id 更改为垃圾,认为可能隐藏是一个不好的 ID,但我仍然得到了相同的效果。有人知道发生了什么吗?

编辑:“#hidden”元素与“#asdf”相同 完整代码:

<script type="text/javascript">
        $(document).ready(function () {
            var personArray = [{
                name: 'firstName',
                gender: 'male',
                age: 30
            }, {
                name: 'secondName',
                gender: 'female',
                age: 20
            }];

            //finds over object in the array and every property on that object
            //and makes a control out of it and styles is.
            function pretty(array) {
                var divArray = [];
                for (var i = 0; i < array.length; i++) {
                    var $div = $('<div>').addClass('person');
                    for (var prop in array[i]) {
                        var $span = $('<span>').text(prop + ': ' + array[i][prop]);
                        $div.append($span);
                    }
                    divArray.push($div);
                }
                return divArray;
            }

            $('body').append(pretty(personArray));

            $('.person span').click(function () {

                update($(this).parent());
            });
            function update(control) {
                var $spans = $(control).children('span');
                for (var i = 0; i < $spans.length; i++) {
                    $('#asdf').append($spans[i]).css('float', 'left');
                    var textBox = $('input').attr('type', 'textbox').css('float', 'right');
                    $('#asdf').append(textBox);
                }
                $('.updatePanel').fadeIn();
            }
            console.log('wEPDwUKLTIwNjAyODU4M2RkOhAAaDmHX8rBCXDQytiqIx94ch'.length);
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div id="asdf" style="float:right" class="updatePanel"></div>
    </div>



    </form>
</body>

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    在这条线上

    var textBox = $('input').attr('type', 'textbox').css('float', 'right');
    

    你可能想这样做:

    var textBox = $('<input>').attr('type', 'textbox').css('float', 'right');
    

    ViewState 存储在隐藏的输入元素中,执行 $("input") 将选择页面上的所有输入元素。 ViewState 元素可能是页面上的第一个元素。

    【讨论】:

    • 就是这样。我使用选择器而不是创建新元素,它使页面上唯一的输入元素可见。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2020-03-28
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多