JS在ajax返回的html中验证表单数据

时间:2012-09-14 17:06:08

标签: javascript jquery

Ajax返回的HTML包括一个表和一个提交按钮(type = button)

该表包含克隆表行的jQuery例程(每行允许选择/上传一个文件,并且有两个值:<input type="text">用于文档标题,以及<input type="file">

<table id="MyTable">
<tr name="tr3" id="tr3">
    <td>
        <input type="text" name="dt[]" id="dt1">
    </td>
    <td>
        <input type="file" name="fff[]" id="ff1">
    </td>
</tr>
</table>
<input type="button" name="sub1" id="sub1" value="Submit" onclick="checkform();">

提交表单后,我必须检查每个文档标题是否已填写,因此提交按钮会调用javascript例程:

function checkform()
{
    if(document.updateprojectdocs.dt[0].value=='')
    {
        alert("Fields marked with an asterisk are required.");
        document.updateprojectdocs.dt[0].focus();
        return;
    }

    document.getElementById("TheForm").submit();
}

当然,这不起作用(脚本在表单提交之前死亡 - 但如果我删除了前面的if结构则提交)。谁能告诉我为什么以及如何解决?

此外,还会有一个不确定数量的dt[]字段需要检查。我怎么能构建一个循环来做到这一点?我怀疑jQuery的.find()。each()可以使用,但不确定它会是什么样的?


更新

感谢DaHaKa的回复,我更接近解决方案。我将DaHaKa的建议代码修改为jQuery。

我在与DaHaKa交流方面遇到了麻烦 - 出于某种原因,他的回复在他发布之后很长很久没有出现(问题可能就在我身上)。在我等待(几个小时)的时候,我在另一个问题中发布了部分问题并最终解决了问题。另一个问题发展到了FULL CORRECT ANSWER,我指导未来的观众。请注意,用户thecodeparadox已创建a working JSFiddle of the full solution

我已将这个问题授予DaHaKa,因为他非常愿意并且能够提供帮助,但是干预了问题。再次感谢,D。

1 个答案:

答案 0 :(得分:1)

在这种情况下jQuery的每个函数都不是必需的,你可以这么简单地做这个=&gt;

<table id="MyTable">
<tr name="tr3" id="tr3">
    <td>
        <input type="text" name="dt" id="dt1">
    </td>
    <td>
        <input type="file" name="fff" id="ff1">
    </td>
</tr>
</table>

<input type="button" name="sub1" id="sub1" value="Submit">

的JavaScript

document.getElementById("sub1").onclick = function(){
    if (document.getElementById("dt1").value!=""){
        document.getElementById("TheForm").submit();
    } else {
        alert("Empty Field(s) !");
    }
};

您应该在html代码的JavaScript中使用ids,而不是NAME代码

关于你的文件输入是什么,你可以从你的服务器端脚本语言如php了解它,具有超全局变量$_FILES['file']['error']类型