不确定如何说出那个尴尬的尴尬标题。我有这个脚本检查文件扩展名,以确保它们是.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 ...帮助..并且谢谢你!??
答案 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事件关联的事件对象作为参数传递(你为参数命名并不重要,但大多数人使用event
或e
- 如果您不需要使用事件对象,则不必声明参数。
如果您不需要从提交处理程序以外的任何地方调用此函数,那么您不需要单独定义它并将其关联为处理程序,只需执行以下操作:
$("form").submit(function(e) {
var fieldvalue = $(this).find('input[type=file]').val();
// etc
if (someCondition)
e.preventDefault();
});
请注意,使用$("form")
,您将获得页面上的所有表单。要选择其中一些,请为相关的人提供一个课程并说出$("form.classNameHere")
。