0

不知道如何为这个尴尬的标题道歉。我有这个脚本可以检查文件扩展名以确保它们是 .mp3。我只是为了克服使用哪个选择器来获取文件名。

例子:

<form name="uploadsong1" action="" enctype="multipart/form-data" method="post" onsubmit="return ExtensionsOkay();">
<input name="song1" type="file" accept="*.mp3" />
etc..

ExtensionsOkay 首先获取字段值....我知道这是问题所在...

var fieldvalue = $(this).$('input[type=file]').value;

问题来自我有多个上传表单的事实。uploadsong1、uploadsong2 等的表单名称...

因此,根据我的推理,我需要获取作为表单名称的“this”,然后是作为文件的输入。(输入名称像表单名称一样增加 1、2、3 等)。

我知道我的语法必须是错误的获取字段值...帮助..谢谢!??

4

2 回答 2

2

尝试

var fieldvalue = $(this).find('input[type=file]').val();
于 2012-08-10T00:46:54.653 回答
1

如果你说你想ExtensionsOkay()从多个表单中调用同一个函数,你应该将它与 jQuery 绑定,而不是在一个内联onsubmit="..."属性中。(实际上您通常应该避免使用内联事件属性。)

$("form").submit(ExtensionsOkay);

然后,在函数this中将引用有问题的表单,因此您可以使用它来获取提交的特定表单中的字段值。以下是在 中选择字段的两种不同方法this

function ExensionsOkay(event) {
    var fieldvalue = $(this).find('input[type=file]').val();    
    // or
    var fieldvalue = $('input[type=file]', this).val();
    // and then if you want to prevent the form submitting:
    event.preventDefault();
}

当 jQuery 调用您的函数时,它会将与提交事件关联的事件对象作为参数传递(无论您如何命名参数,但大多数人使用evente- 如果您不需要使用事件对象,您不需要'不必声明参数)。

如果您不需要从除提交处理程序之外的任何地方调用此函数,那么您不需要单独定义它并将其关联为处理程序,只需执行以下操作:

$("form").submit(function(e) {
    var fieldvalue = $(this).find('input[type=file]').val();
    // etc
    if (someCondition)
       e.preventDefault();
});

请注意,$("form")您将获得页面上的所有表单。要选择其中的一些,请给相关的一个类并说$("form.classNameHere")

于 2012-08-10T02:08:09.750 回答