0

摘要:我正在尝试将字段添加到组织中成员的一种在线个人资料中,用 javascript 编写。我对这种语言真的很陌生,所以我发现自己需要一些帮助。

背景(工作原理):该脚本允许用户单击“添加”按钮,填写包含基本字段(名字、姓氏、职位、照片、等等等等)的表格,然后将数据存储在 mysql 数据库中通过 php 脚本。添加此人后,他们会进入显示照片和姓名的列表;可以通过单击每张照片来编辑个人资料。用户可以根据需要添加尽可能多的人。请参阅下图以了解界面(真实人物的图像/名称已被像素化以保护无辜者......免受......某些东西):

人员界面

我正在尝试做什么(什么不起作用):所以一切都很好......可能是因为我没有写那部分。当我尝试将一组字段(ownership_percentage、edu、skill、prof、award、community、years、&community)添加到原始字段正下方的弹出表单中时,问题就来了:

    createForm: function(n) {
        item = $("<table> \
            <tr><th>Name</th><td class='twoinput'><input name='pfname' placeholder='Jane'/><input name='plname' placeholder='Smith'/></tr> \
            <tr><th>Title</th><td><input name='ptitle' placeholder='Chief Executive Officer'/></tr> \
            <tr><th>Short Bio</th><td><textarea name='pbio'/></textarea></td></tr> \
            <tr><th>Photo</th><td><input id='photo_upload' name='photo'/> <input type='button' id='photo_button' value='Open Media Library'/></tr> \
            <tr><td colspan='2'>(Optional) Upload a photo of <acronym title='Replace this with their first name?'>this person</acronym>. The bigger the better&mdash;don't worry, we'll scale this down for you.</td></tr> \
            </table>\
            <br/>\
            <table>\
            <tr><th>Education</th><td><textarea name='pedu'/></textarea></td></tr> \
            <tr><th>Relevant Skills</th><td><textarea name='pskills'/></textarea></td></tr> \
            <tr><th>Professional Experience</th><td><textarea name='pprof'/></textarea></td></tr> \
            <tr><th>Awards & Recognition</th><td><textarea name='pawards'/></textarea></td></tr> \
            <tr><th>Community Involvement</th><td><textarea name='pcommunity'/></textarea></td></tr> \
            <tr><th>Years with the Company</th><td><input type='text' size='2' maxlength='2' name='pyears'/>years</td></tr>\
            <tr><th>Compensation Details</th><td><textarea name='pcompensation'/></textarea></td></tr> \
            </table>\
            <br/>\
            <table>\
            <tr><td id='ownershipquestion' colspan='2'>Does this person have an ownership stake?</td><td id='ownershipbox'><input type='checkbox' id='part_owner' name='owner' value='1'/>Yes</td></tr>\
            <tr><td id='ownershipperquestion' colspan='2'>What percentage does this person hold?</td><td id='ownershipperanswer'><input type='text' size='3' maxlength='3' id='ownership_percentage' name='ownership_percentage'/>%</td></tr>\
        </table>");
        if(n < upsmart.people.people.length) {
            p = upsmart.people.people[n];
            item.find("input[name=pfname]").attr("value",p.fname);
            item.find("input[name=plname]").attr("value",p.lname);
            item.find("input[name=ptitle]").attr("value",p.title);
            item.find("textarea[name=pbio]").attr("value",p.bio);
            item.find("input[name=photo]").attr("value",p.photo);
            item.find("input[name=owner]").attr("value",p.owner);
            item.find("input[name=ownership_percentage]").attr("value",p.ownership_percentage);
            item.find("input[name=pedu").attr("value",p.edu);
            item.find("input[name=pskills").attr("value",p.skills);
            item.find("input[name=pprof").attr("value",p.prof);
            item.find("input[name=pawards").attr("value",p.awards);
            item.find("input[name=pcommunity").attr("value",p.community);
            item.find("input[name=pyears").attr("value",p.years);
            item.find("input[name=pcompensation").attr("value",p.compensation);
        }
        return item;
    },

        var person = {
            id: $("#dialog").data("person"),
            fname: $("#dialog input[name=pfname]").attr("value"),
            lname: $("#dialog input[name=plname]").attr("value"),
            title: $("#dialog input[name=ptitle]").attr("value"),
            bio:   $("#dialog textarea[name=pbio]").attr("value"),
            photo: $("#dialog input[name=photo]").attr("value"),
            owner: $("#dialog input[name=owner]").attr("value"),
            ownership_percentage: $("#dialog input[name=ownership_percentage]").attr("value"),
            edu: $("#dialog input[name=pedu]").attr("value"),
            skills: $("#dialog input[name=pskills]").attr("value"),
            prof: $("#dialog input[name=pprof]").attr("value"),
            awards: $("#dialog input[name=pawards]").attr("value"),
            community: $("#dialog input[name=pcommunity]").attr("value"),
            years: $("#dialog input[name=pyears]").attr("value"),
            compensation: $("#dialog input[name=pcompensation]").attr("value"),
        }

问题(它如何不工作):

  • 当我单击加号按钮时,这些新字段在弹出窗口中显示得很好
  • ...但不要保存任何数据,尽管它不会禁止存储上面代码中“ownership_percentage”上面列出的任何内容。
  • 随着这些新字段的出现,我无法通过单击图像来编辑任何现有信息(没有弹出任何内容)。
  • 当我保存表单时,我会收到每个新字段的“未定义属性”错误消息,无论它是否有数据。

我检查了 php 保存脚本,一切正常;好像我在我的 javascript 中遗漏了一些东西来将这些新值传递到一个数组中供 php 处理。我想不出可能导致这种差异的原因,我正在寻找想法。

非常感谢任何帮助,并提前非常感谢!

这是一个 txt 文件的链接,其中包含

  1. 调用 javascript 并接收其输出的 php 函数
  2. 将输出保存到数据库的 php 函数
  3. 有问题的javascript
4

1 回答 1

0

由 RUJordan 提供的虎头蛇尾解决方案,关于我发布的关于“无法识别的表达错误”的单独问题

来源:https ://stackoverflow.com/a/18541225/2540204

问题是我在所有新表单字段上都缺少右括号,所以

        if(n < upsmart.people.people.length) {
            p = upsmart.people.people[n];
            item.find("input[name=pfname]").attr("value",p.fname);
            item.find("input[name=plname]").attr("value",p.lname);
            item.find("input[name=ptitle]").attr("value",p.title);
            item.find("textarea[name=pbio]").attr("value",p.bio);
            item.find("input[name=photo]").attr("value",p.photo);
            item.find("input[name=owner]").attr("value",p.owner);
            item.find("input[name=ownership_percentage]").attr("value",p.ownership_percentage);
            item.find("input[name=pedu").attr("value",p.edu);
            item.find("input[name=pskills").attr("value",p.skills);
            item.find("input[name=pprof").attr("value",p.prof);
            item.find("input[name=pawards").attr("value",p.awards);
            item.find("input[name=pcommunity").attr("value",p.community);
            item.find("input[name=pyears").attr("value",p.years);
            item.find("input[name=pcompensation").attr("value",p.compensation);
        }

成为

        if(n < upsmart.people.people.length) {
            p = upsmart.people.people[n];
            item.find("input[name=pfname]").attr("value",p.fname);
            item.find("input[name=plname]").attr("value",p.lname);
            item.find("input[name=ptitle]").attr("value",p.title);
            item.find("textarea[name=pbio]").attr("value",p.bio);
            item.find("input[name=photo]").attr("value",p.photo);
            item.find("input[name=owner]").attr("value",p.owner);
            item.find("input[name=ownership_percentage]").attr("value",p.ownership_percentage);
            item.find("input[name=pedu]").attr("value",p.edu);
            item.find("input[name=pskills]").attr("value",p.skills);
            item.find("input[name=pprof]").attr("value",p.prof);
            item.find("input[name=pawards]").attr("value",p.awards);
            item.find("input[name=pcommunity]").attr("value",p.community);
            item.find("input[name=pyears]").attr("value",p.years);
            item.find("input[name=pcompensation]").attr("value",p.compensation);
        }
于 2013-08-30T21:04:28.373 回答