我很难在我的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的新手。但我们原本以为这是一项简单的任务。我在做什么?
答案 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;