2009-01-13 39 views
0

我创建了一个javascript函数,允许我验证一个字段或另一个字段是否已填充(称为,足够令人震惊,oneortheother)。从本质上讲,它检查是否都填充,或两者都会抛出错误。验证其中一个或另一个

要验证的字段之一是input type="file"字段。我在现场文件下面显示现有文件,以便用户可以看到它是否是他们想要的文件。

有没有什么办法可以通过oneortheother仍然验证没有input type="file"的值?任何类型的javascript欺骗?

在这一点上,我已经很有智慧,今天晚些时候有一个演示需要这个功能,所以任何帮助都将不胜感激。

编辑:

按照要求,这里有一些例子:

<label for="pdf">Upload PDF: 
<span class="fieldnote">Files of type .pdf</span> 
</label> 
<input type="file" name="pdf" id="pdf" class="external_form_field oneortheother_url" value="/downloads/white_papers/HigherOrderPerl.pdf" /> 
<label>Existing file:</label><span class="preview"><a href="/downloads/white_papers/HigherOrderPerl.pdf" target="_blank">HigherOrderPerl.pdf</a></span> 
<label for="url">Link to asset:</label> 
<input type="text" name="url" id="url" class="external_form_field oneortheother_pdf" value="" size="25" /> 

注意,类oneortheother_urloneortheother_pdf应用。这允许验证例程知道要比较哪个字段。比较是:

if (fObj.value && fObj2.value) { } 

if (!fObj.value && !fObj2.value) { } 
+0

你能发表一个例子吗?你的描述不够清楚。 – 2009-01-13 15:22:43

+0

我不明白这个问题。 – 2009-01-13 15:28:12

+0

crescentfresh - 实质上,我想找到某种方法使现有文件条目“覆盖”输入类型=“文件”,以使其他条目仍然有效。 – 2009-01-13 15:31:02

回答

1

我不知道你的验证功能是如何工作的,但好像你可以添加保存上传的预览文件或网址隐藏输入文件输入中的值。然后,您可以将url输入与隐藏输入进行比较。

但似乎你可能只需要编写一个自定义验证函数。

0

我不确定我完全理解你的问题,因为我不清楚。

你要检查:

if (fObj.value && fObj2.value) {} 

if (!fObj.value && !fObj2.value) {} 

那么,为什么不也添加此...

if (fObj.value && !fObj2.value) {} 

if (!fObj.value && fObj2.value) {} 
0

如何在每个选项旁边添加单选按钮,并允许所选单选按钮确定使用哪个选项?

4

我很遗憾我无法理解的实际问题,但这里有一个侧边栏提示:

XOR运算符可以派上用场了(虽然晦涩难懂)的情况下,像这样:

if (fObj.value^fObj2.value) { 
    // Only one value is set, we're good 
} else { 
    // Both of them are set or neither of them are set 
} 
0

我我不确定你想要在这里做什么,但你可以添加一个隐藏的表单域,然后将一个函数附加到文件输入和URL输入事件中,这会将隐藏字段设置为该值。

基本上我甚至不确定你现在采用的方法是否合适 - 例如,Firefox 3不允许你直接编辑文件字段的内容,并且据我所知可以给你没有办法“解除”一个值。因此,一旦选择了一个文件,“pdf”输入将总是非空,它与你设置的约束(据我了解)意味着“url”输入有效永久禁用。这是更糟的,因为你给文件输入一个初始值,以便它永远不会是空/空字符串。

您可能需要退后一步,仔细想想您想要达到的效果以及替代技术是否会更好。例如,一个单选按钮可在文件上传框或URL资源之间进行选择,该资源会根据需要禁用和启用字段。

此外,这里的大多数人并不完全理解你所要求的,即使在编辑之后,这也表明它有一些不太直观的含义,这意味着那些需要维护它的人未来的代码可能会经历类似的事情。同样,重构设计可能是有序的,或者可能只是一堆描述性评论。

相关问题