使用 javascript 和 PHP 验证每个类元素,然后从下一步按钮中删除禁用的类
Posted
技术标签:
【中文标题】使用 javascript 和 PHP 验证每个类元素,然后从下一步按钮中删除禁用的类【英文标题】:Validation on each class element using javascript and PHP then remove disabled class from the next step button 【发布时间】:2019-12-06 13:02:38 【问题描述】:我正在尝试对每个类元素进行验证。我正在使用具有相同名称属性的多个输入的表单。我想验证每个输入元素。
这是我的 HTML
<input type="text" class="date_of_birth" name="date[]" onkeyup="dateOfBirth('stepbirth')" />
<span class="stepbirthVal"></span>
<input type="text" class="date_of_birth" name="date[]" onkeyup="dateOfBirth('stepbirth')" />
<span class="stepbirthVal"></span>
<a href="javascript:;" id="stepbirth" class="btn disabled" onclick="kindKompas('stepbirth')">Next Step</a>
我如何将值发送到我的 PHP 脚本
function dateOfBirth(inputid)
var DoB = [];
$(".date_of_birth").each(function()
DoB.push($(this).val());
);
var newDob = DoB.slice(0,-1);
var stepVar = newDob;
var xmlhttp;
if (window.XMLHttpRequest)
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
else
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
if (xmlhttp.readyState==4 && xmlhttp.status==200)
//GET JSON from Validation.php and extract the nodes
var response = xmlhttp.responseText;
var parseJson = JSON.parse(response);
var resultCode = parseJson.code;
var resultMessage = parseJson.message;
//Show Validation Message
var items = document.getElementsByClassName("stepbirthVal"),
i, len;
for (i = 0, len = items.length; i < len; i++)
items[i].innerhtml = resultMessage;
//Style the button
var element = document.getElementById(inputid);
if(resultCode == 0)
element.classList.add("disabled");
if(resultCode == 1)
element.classList.remove("disabled");
xmlhttp.open("GET","test.php?q="+stepVar+"&q2="+inputid";
xmlhttp.send();
当用户填写第一个输入时,它会得到验证并从按钮中删除禁用的类。我在网络中检查仅填写一个输入字段时我如何接收值
test.php?q=20/02/2000&q2=stepbirth
这很好,我的 php 脚本期望这样的值。它得到验证并删除禁用的类。
但问题是当有多个输入数据时,我会收到这样的值
test.php?q=20/02/2000,03/05/2010&q2=stepbirth
然后脚本停止验证,因此禁用的类不会删除。
这是我的 php 脚本。
//Get Parameters Passed From the JS Call to This Script
$fieldValue = $_GET["q"];
$fieldName = $_GET["q2"];
//Validate the DOB
if($fieldName == 'stepbirth')
$birthDateLen = strlen($fieldValue);
if($birthDateLen > 9)
if (checkBirthDate($fieldValue))
//
//Get last 4 characters of the Date for the Year
$year = substr($fieldValue, -4);
if($year > 1900)
//Get Timestamp passed over
$dt = DateTime::createFromFormat('d/m/Y', $fieldValue);
$userDate = $dt->getTimestamp();
//Get Date 1 Year from Today
$yearTime = date(strtotime('+10000 year'));
//If User's Date is Within 1 Year
if($userDate < $yearTime)
echo '"code":1,"message":""';
else
echo '"code":0,"message":"Fill date to 365 days from now.';
else
echo '"code":0,"message":"Please fill valid date of birth."';
else
echo '"code":0,"message":""';
希望你们能理解我的问题。
提前致谢。
【问题讨论】:
【参考方案1】:您应该遍历以逗号分隔的日期字符串列表,验证每一个。这是解决方案的模型:
<?php
$fieldValue = "20/02/2000,03/05/2010";
$fieldName = "stepbirth";
//Validate the DOB
if ($fieldName == 'stepbirth')
$birthDateLen = strlen($fieldValue);
if ($birthDateLen > 9)
foreach (explode(",", $fieldValue) as $dateString)
echo $dateString;
//Get Timestamp passed over
$dt = DateTime::createFromFormat('d/m/Y', $dateString);
//$userDate = $dt->getTimestamp();
//Get Date 1 Year from Today
$yearTime = date(strtotime('+10000 year'));
//Get last 4 characters of the Date for the Year
$year = substr($fieldValue, -4);
if ($year <= 1900)
echo '"code":0,"message":""';
else if ($userDate < $yearTime)
//If User's Date is Within 1 Year
echo '"code":1,"message":""';
else
echo '"code":0,"message":"Fill date to 365 days from now.';
【讨论】:
以上是关于使用 javascript 和 PHP 验证每个类元素,然后从下一步按钮中删除禁用的类的主要内容,如果未能解决你的问题,请参考以下文章
LNMP提示Nginx PHP “No input file specified”错误的解决办法
在rest api app中生成laravel请求验证的最佳实践
关于thinkphp5.0以上的版本使用PHP5.5版本以上”No input file specified“问题解决
运行PHP出现No input file specified错误的解决办法