【问题标题】:jquery selector using (this) for form elementsjquery选择器使用(this)作为表单元素
【发布时间】:2012-08-10 00:45:29
【问题描述】:

对于这个尴尬的标题感到抱歉,我真的不知道该怎么说。我有这个脚本可以检查文件扩展名以确保它们是 .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 等)。

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

【问题讨论】:

  • 你为什么不看看所有的jquery函数,相信我很有趣

标签: jquery forms file-upload syntax


【解决方案1】:

试试

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

【讨论】:

  • 嗯,我对这个寄予厚望!但是,它显示为字段值“未定义”....
  • 已更新 - jQuery 中没有 value,只有 val()
  • 再次感谢 Zoltan 的快速回复。但是,它似乎仍然存在问题。我仍然不确定。但从逻辑上讲,这一切似乎都是正确的!很奇怪....
  • Ahhhh 我认为是因为我使用的是通过常规 javascript 调用的“onsubmit”,而不是使用您正在使用的 $("form").on("submit",也许它不能找到“这个”......让我移动一些代码,看看我能做什么......我会在几个小时内报告
【解决方案2】:

如果你说你想从多个表单中调用相同的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")

【讨论】:

  • 效果很好!我不得不通读几遍,但我现在完全理解了。由于您的布局,它实际上相当简单!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2023-04-06
  • 1970-01-01
  • 2018-09-05
  • 2014-02-01
  • 1970-01-01
  • 2013-07-17
相关资源
最近更新 更多