jquery选择器使用(this)表单元素

时间:2012-08-10 00:45:30

标签: jquery forms file-upload syntax

不确定如何说出那个尴尬的尴尬标题。我有这个脚本检查文件扩展名,以确保它们是.mp3s。我只是想克服用于获取文件名称的选择器。

示例:

<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等。)

我知道我的语法必须是错误的抓住fieldvalue ...帮助..并且谢谢你!??

2 个答案:

答案 0 :(得分:2)

尝试

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

答案 1 :(得分: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调用你的函数时,它会将与submit事件关联的事件对象作为参数传递(你为参数命名并不重要,但大多数人使用evente - 如果您不需要使用事件对象,则不必声明参数。

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

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

请注意,使用$("form"),您将获得页面上的所有表单。要选择其中一些,请为相关的人提供一个课程并说出$("form.classNameHere")

相关问题