html表单javascript被忽略

时间:2012-04-17 15:19:46

标签: javascript html validation

我很难在我的html表单中实现JavaScript。 我整个都在使用很多PHP。我即将发布的代码包含在用户访问的单独页面中。这是一个php页面。

表单当前不包含action =,它会将其提交给formposts.php。我把它拿出去看看我的JavaScript是否被忽略,表格是在checkign JavaScript之前发送的。但即使没有动作,我的表单也不会响应JavaScript。

我已经使用了简单形式的JS,只是为了检查它是否有效,然后再详细介绍。我真的需要一些帮助,如何使这项工作,我不知道问题出在哪里!!

打开表单时以及关闭时我已经包含了脚本调用。 onsubmit // onclick我也尝试过包含标签来显示文字。 JS终结了代码。您可以忽略一些文本/脚本。我想表格的开头,前三种输入类型,表格和JS的结束都包括在内。我已经采取了一些措施,因为它是一个很长的形式。

    <p><?php echo $session->getText("profileInfo",$language); ?></p>

<table width="530" border="0">
  <tr>
    <th scope="col" width="40%"><form enctype="multipart/form-data" method="POST" onsubmit="return checkForm()" name="registration">
                                <img src="<?php echo $userDetails['picUrl']; ?>" border="none"> ;</th>
    <th scope="col" width="60%"><h3><?php echo $session->getText("profileMenuPersonal",$language); ?></h3></th>
  </tr>
  <tr>
    <td><h4><?php echo $session->getText("regPic",$language); ?></h4></td>
    <td><input type="file" name="uploaded" id="uploaded" onblur="checkType()"  /> <label id="picMSG"></label> </td>
  </tr>
  <tr>
    <td><h4><?php echo $session->getText("regFname",$language); ?></h4></td>
    <td><input type="text" id="firstName" name="firstName" value="<?php echo $userDetails['firstName']; ?>" /></td>
  </tr>
  <tr>
    <td><h4><?php echo $session->getText("regLname",$language); ?></h4></td>
    <td><input type="text" id="lastName" name="lastName" value="<?php echo $userDetails['lastName']; ?>" /></td>
  </tr>
<tr>   <!--  I have taken some code out for readability of this post -->
    <td><input type="hidden" id="reqtype" name="reqtype" value="personalDetails"  />
        <input type="hidden" id="realUserId" name="realUserId" value="<?php echo $realUserId; ?>" /></td>            
    <td><input type="submit" name="submit" value="update / save" class="button" onclick="return checkForm()" />
        </form>
    </td>
  </tr>
</table>

<script type="text/javascript">

    function checkForm()
    {
        var picture = document.getElementById('uploaded').value;
        var firstName = document.getElementById('firstName').value;
        var lastName = document.getElementById('lastName').value;
        var email = document.getElementById('email').value;
        var address1 = document.getElementById('address1').value;
        var address2 = document.getElementById('address2').value;
        var postCode = document.getElementById('postCode').value;
        var email = document.getElementById('email').value;
        //      files types that r not allowed
        //      And are considered harming - 
        //      someone purposfully trying to harm the system
        var str1 = ".php"; 
        var str2 = ".js";
        var str3 = ".html"; 
        if(!document.registration.firstName.value)
        {
            alert('please enter name');
            return false;
        }
        if(picture.indexOf(str1) != -1 || picture.indexOf(str2) != -1 || picture.indexOf(str3) != -1)
        { 
            alert("You have tried to upload content that may harm our system. The admin has been contacted and your account flagged. You may be deleted."); 
            return false;
        }
        // allowed file types
        var str1 = ".jpeg"; 
        var str2 = ".gif";
        var str3 = ".png";
        if(picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 )
        {
            return true;
        }else{
                alert("We only allow jpeg, gif and png files to be uploaded."); 
                return false;
        }

    }
    function checkType()
    {
        var picture = document.getElementById('uploaded').value;
        var element = document.getElementById('picMSG').value
        //      files types that r not allowed
        //      And are considered harming - 
        //      someone purposfully trying to harm the system
        var str1 = ".php"; 
        var str2 = ".js";
        var str3 = ".html"; 
        if(picture.indexOf(str1) != -1 || picture.indexOf(str2) != -1 || picture.indexOf(str3) != -1)
        { 
            element.innerHTML = "invalid type";
            element.style.color = "red";
        }
        // allowed file types
        var str1 = ".jpeg"; 
        var str2 = ".gif";
        var str3 = ".png";
        if(picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 )
        {
            return true;
        }else{

        }
    }
</script>

有没有人知道为什么我的“简单”JS被忽略了?

我是PHP和JS的新手。但我们原本以为这是一项简单的任务。我在做什么?

3 个答案:

答案 0 :(得分:1)

这是我猜测的......在我将代码剥离后...... http://jsfiddle.net/VVYR3/15/

将提交按钮更改为:

onclick="checkForm()"代替onsubmit="return checkForm()"(一旦你开始工作,你可以进一步试验)

并且大多数重要您的脚本不应该在您的表单之后,而是将其放在<HEAD>

答案 1 :(得分:0)

由于您删除了部分代码但是我已经尝试了并且在调试时调用了checkForm,因此很难为您调试它。它失败了

var email = document.getElementById('email').value;

因为没有“email”的元素可以在其上找到值。

你的验证有点草率,但是名为jpg.exe的文件呢。它现在将通过代码传递。

您是否考虑过不重新发明轮子并使用经过测试的框架?那里有很多,他们甚至有很好的幻想ajax功能。像这样:http://valums.com/ajax-upload/

答案 2 :(得分:0)

我认为你必须这样做

<input type="submit" name="submit" value="update / save" class="button" onclick="checkForm()" />

而不是

<input type="submit" name="submit" value="update / save" class="button" onclick="return checkForm()" />

<小时/> 尝试更改

if(!document.registration.firstName.value)

if(firstName == "")

和(每)

picture.indexOf(str1) != -1

picture.search(str1) == -1


并检查它是否有效&gt;。&gt;