Javascript函数参数不起作用

时间:2014-09-07 19:53:17

标签: javascript

在我的html表单中,我有4个文件输入字段。

<input type="file" id="one" name="Title_image1" onchange="check_extension(one)"/>
<input type="file" id="one2" name="Title_image2" onchange="check_extension(one3)"/>
<input type="file" id="one3" name="Title_image3" onchange="check_extension(one4)"/>
<input type="file" id="one4" name="Title_image4" onchange="check_extension(one5)"/>

我想使用javascript检查输入上的文件扩展名。

我的功能

function check_extension($field_id)
{
    var allowed = {'jpg': 1, 'png': 1};
    var fileinput = document.getElementById("$field_id");

    var y = fileinput.value.split(".");
    var ext = y[(y.length) - 1];
    ext = ext.toLowerCase();

    if (allowed[ext]) {
        document.chooseF.confirm.disabled = false;
        return true;
    } else {
        alert("This is an unsupported file type. Supported files are: jpg,png");
        document.chooseF.confirm.disabled = true;
        return false;
    }
}

我对所有输入字段使用相同的函数,并将fieldid作为参数,但它不起作用。

2 个答案:

答案 0 :(得分:2)

  • onchange="check_extension(one)"

    此处one节点,ID为“one”,one不是字符串"one"

  • document.getElementById("$field_id");

    即使$field_id是ID "one""$field_id"也是不同的字符串
    因此,getElementById("$field_id")会为您提供ID为"$field_id"的节点,而不是ID为"one"的节点。

修复

onchange="check_extension('one')"

document.getElementById($field_id)

另外,我不鼓励使用前导$

命名字符串变量

答案 1 :(得分:0)

改变这个:

<input type="file" id="one" name="Title_image1" onchange="check_extension(one)"/>
像这样:

<input type="file" id="one" name="Title_image1" onchange="check_extension('one')"/>

然后改变这个:

function check_extension($field_id)
{
    var allowed = {'jpg': 1, 'png': 1};
    var fileinput = document.getElementById("$field_id");
....
像这样:

function check_extension(field_id)
{
    var allowed = {'jpg': 1, 'png': 1};
    var fileinput = document.getElementById(field_id);
...