2

我是该网站的长期访问者,但第一次发帖。

我是 JavaScript 新手,并且已尽我所能制作一个脚本,该脚本将根据所选参数动态更新表单。当用户选择(在这种情况下)零件编号时,他们可以单击“更新”按钮,该按钮将相应地更改其他七个字段。万一出现错误,我已经创建了一个重置​​按钮来重置零件编号字段并且(这是它损坏的地方)然后如果您再次单击“更新”按钮,其他七个字段也应该重置。我希望这是有道理的。大约在零件编号列表的一半时,我尝试了该功能并且效果很好,但是在某个地方它坏了。现在唯一重置它应该的方式的部分是“oempma.value”。

无论如何,对不起,冗长的帖子,我会继续下去。这是我的表单代码(new.php):

这是调用该函数的 dynamicupdate.js 文件:

function dynamicupdate(form, prefix, part_number, flight_control, lat_position, long_position, vert_position, location, material, oempma) 
    {
        if(form)
            {
                if(part_number.value === "C6CF1124-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "Left";
                    long_position.value = "Fwd";
                    vert_position.value = "N/A";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                }

                if(part_number.value === "C6CW1031-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "";
                    long_position.value = "N/A";
                    vert_position.value = "";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                    }
                        if (part_number.value === "C6CW1031-1" && lat_position.value === "" && vert_position.value === "")
                        {
                        alert ("You must manually enter the \"Lat Position\" and \"Vert Position\" for this cable.");
                        }


            }

        else 
            {
            flight_control.value = "";
            lat_position.value = "";
            long_position.value = "";
            vert_position.value = "";
            location.value = "";
            material.value = "";
            }


        if(prefix.value === "PDM" || prefix.value === "TB" || prefix.value === "JNL")
            {
            oempma.value = "PMA";
            }
        else if(part_number.value === "")
            {
            oempma.value = "";
            }
        else
            {
            oempma.value = "OEM";
            }

        return;
    }

这个函数也位于 dynamicupdate.js 文件中,但由于某种原因,我无法让它留在上面的代码块中。

function resetsome(form, prefix, part_number)
    {
    part_number.value = "";
    prefix.value = "";
    }

我已经尝试了几种方法来解决这个问题,包括将一些大块的 .js 文件删除到它曾经工作的地方,以防万一我把事情弄得更糟,但这并没有解决它。我还阅读了大量适用于这种情况的 JavaScript 语言,但我可以看到我做错了什么。

4

2 回答 2

0

你的代码有很多问题,不,我不是在考虑长度或代码结构。

首先,如果你不需要一些参数,你不应该在函数中定义它们,如果你定义了它们,你应该使用它们,你在resetsome函数中的表单参数是未使用的,应该删除或使用。

其次, 的值this是你所在的对象(函数)。例如,试试这个:

this.foo = 'bar';
function that()
{
    this.foo = 'loremipsum';
}
that();
alert(this.foo);

你就会明白我的意思。

而不是使用 this 的成员,您应该创建变量并将值存储在那里。我相信如果你这样做,你的代码应该可以工作。

于 2012-10-08T12:03:14.270 回答
0

我想问题是这样的:

if(form){/*...*/}

当表单为真时,不会执行重置字段的代码。

试试这个:

 function dynamicupdate(form, prefix, part_number, flight_control, lat_position, long_position, vert_position, location, material, oempma) 
    {
      if(!form)return;


        if(part_number.value !== ""){
                if(part_number.value === "C6CF1124-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "Left";
                    long_position.value = "Fwd";
                    vert_position.value = "N/A";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                }

                if(part_number.value === "C6CW1031-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "";
                    long_position.value = "N/A";
                    vert_position.value = "";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                    }
                        if (part_number.value === "C6CW1031-1" && lat_position.value === "" && vert_position.value === "")
                        {
                        alert ("You must manually enter the \"Lat Position\" and \"Vert Position\" for this cable.");
                        }


            }

        else {//when part_number.value is empty reset the fields
            flight_control.value = "";
            lat_position.value = "";
            long_position.value = "";
            vert_position.value = "";
            location.value = "";
            material.value = "";
            }


        if(prefix.value === "PDM" || prefix.value === "TB" || prefix.value === "JNL")
            {
            oempma.value = "PMA";
            }
        else if(part_number.value === "")
            {
            oempma.value = "";
            }
        else
            {
            oempma.value = "OEM";
            }

        return;
    }
于 2012-10-08T12:18:39.020 回答