本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

 价值13000svip视频教程,前端大神匠心打造,零基础前端开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在表单中使用 jQuery clone 函数的问题

发布于2021-10-10 16:31     阅读(1009)     评论(0)     点赞(4)     收藏(1)


您将检查的那些代码片段适用于 FF、Chrome、Safari,但在运行 jQuery 克隆功能时似乎是 IE 的问题:

我的模板:

<form method="post" action="/post/add/">
{{ form.management_form }}
    <div class='table'>
      <table class='no_error'>
        <input id="id_mypost_set-0-title" type="text" name="mypost_set-0-title" />
        <input id="id_mypost_set-0-content" type="text" name="mypost_set-0-content" />
      </table>
    </div>
    <input type="button" value="Add Other" id="add_more">
    <script>
        $('#add_more').click(function() {
            cloneMore('div.table:last', 'mypost_set');
         });
    </script>
</form>

在 javascript 文件中:

function cloneMore(selector, type) {
    var newElement = $(selector).clone(true);
    var total = $('#id_' + type + '-TOTAL_FORMS').val();
    newElement.find(':input').each(function() {
        var name = $(this).attr('name').replace('-' + (total-1) + '-','-' + total + '-');
        var id = 'id_' + name;
        $(this).attr({'name': name, 'id': id}).val('').removeAttr('checked');
    });
    newElement.find('label').each(function() {
        var newFor = $(this).attr('for').replace('-' + (total-1) + '-','-' + total + '-');
        $(this).attr('for', newFor);
    });
    total++;
    $('#id_' + type + '-TOTAL_FORMS').val(total);
    $(selector).after(newElement);
 }

问题出在选择器上:“原始 html 代码的克隆工作正常”,但是,克隆代码的克隆将选择器标记为“未定义”,换句话说,我第二次克隆表选择器不再适用于那些克隆的项目。

仅适用于 IE 的问题。

我缺少什么?任何提示都值得赞赏:)


解决方案


这是一个已知的 jQuery 错误,尽管他们声称它已修复。
这里的一种选择是使用.html(),并手动克隆它们。这不会克隆 events 和 saved .data,这对您来说可能是一个问题。.live如果您在这里有活动,可以提供帮助。

如果您唯一需要的是更改名称和 ID,则更好的选择是使用正则表达式(这会从第一个元素克隆事件,请注意):

var name = $(this).attr('name').replace(/-\d+-/,'-' + total + '-');

这将搜索-number-并替换它,因此它会在所有浏览器或-0-IE上找到最后一个数字

这是一个带有警报的工作演示:http : //jsbin.com/evapu

作为旁注 - 您的代码有点混乱。jQuery 代码应该在里面$(document).ready(点击),你有一个没有主体的表格(没有<tr><td>- 输入被抛出),并且代码有一些重复。
尽管在这种情况下没有帮助,但无效的 DOM 和不使用该ready事件可能会导致问题。




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/200852/49f59812b553240e30c2/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)