【问题标题】:dynamically generated form in jquery does not call function on onchange在 jquery 中动态生成的表单不会在 onchange 上调用函数
【发布时间】:2014-05-21 21:24:04
【问题描述】:

很抱歉打扰您,但我不明白为什么单击输入按钮时没有调用函数“fileUpload()”。

我已将问题与动态生成的表单隔离开来——当表单已经加载到页面上时,fileUpload() 可以工作。

代码如下:

var dID;
var pictureform;


$(document).delegate('.ddxaddpic', 'click', function(){
        dID = $(this).prev('.diffddz').find('option:selected').val();
        var n =$('this span.addhere form').length;

        if ((dID !== "") && (n == 0)) {

        pictureform = "<form id='picup"+dID+"' class='picupcl' enctype='multipart/form-data'>"
        pictureform += "<input type='file' id='inp1'  name='fileToUpload"+dID+"[]' onchange='fileUpload('picup"+dID+"','pictureupload.php','upload"+dID+"','picup"+dID+"');'/></br>"
        pictureform +="<input type='hidden' name='filenum' value='"+dID+"'/><input type='hidden' name='clinimg_id' value='"+dID+"'/></form>"
        pictureform +="<span id='upload"+dID+"'></span>";

        $(this).next('.addhere').append(pictureform);


        }

        });

当我点击上传文件时,该函数永远不会被调用。更糟糕的是,我还在没有任何代码的行中收到语法错误“Uncaught SyntaxError: Unexpected token }”。

有什么建议吗?

非常感谢您的帮助。

【问题讨论】:

  • 你的 onchange 事件被简单的引号包围..因此你需要在其中转义简单的引号或用双引号替换它们
  • 另外,如果你使用 jQuery > 1.7,你应该从 .delegate() 切换到 .on()
  • 您可能在某处也有语法错误,导致 "Uncaught SyntaxError: Unexpected token } "

标签: jquery ajax forms dynamic onchange


【解决方案1】:

我在这里至少看到了一个报价问题...

// replace
pictureform += "<input type='file'...
// by 
pictureform += "<input type='file' id='inp1'  name='fileToUpload"+dID+"[]' onchange=\"fileUpload('picup"+dID+"','pictureupload.php','upload"+dID+"','picup"+dID+"');\"/></br>";

在指令末尾加上分号,可以避免一些语法错误风险

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2016-01-20
    • 2019-05-10
    • 2013-09-09
    • 1970-01-01
    • 2021-06-30
    • 2010-11-04
    相关资源
    最近更新 更多