表单输入上的Javascript日期验证

表单输入上的Javascript日期验证,javascript,php,html,validation,Javascript,Php,Html,Validation,我正在尝试验证表单上的日期,以便用户无法选择过去的日期,或者签出日期大于签入日期 <form action="form2email.php" method="post" name="form" target="_blank" onSubmit="return validate(form);"> <fieldset id="user-1"> <h2> <img src="images/booking-enquiry.pn

我正在尝试验证表单上的日期,以便用户无法选择过去的日期,或者签出日期大于签入日期

<form action="form2email.php" method="post" name="form" target="_blank" onSubmit="return validate(form);">
    <fieldset id="user-1">
        <h2>
      <img src="images/booking-enquiry.png" width="160" height="20" />
    </h2>
        <label for="name">Name:</label>
        <input name="name" type="text" />
        <label for="email" class="required">Email:</label>
        <input type="text" name="email" size="8" id="email" />
    </fieldset>

    <fieldset id="user-2">
        <h2>&nbsp;</h2>
        <label for="Phone" class="required">Phone:</label>
        <input type="text" name="Telephone_Number" id="Phone" />
        <label for="Accommodation Type" class="required">Accommodation Type:</label>
        <select id="room_type" name="Accommodation Type">
            <option value="Villa">Villa</option>
            <option value="1 Bed Apartment">1 Bed Apartment</option>
            <option value="2 Bed Apartment">2 Bed Apartment</option>

        </select>
    </fieldset>

    <fieldset id="user-3">
        <h2>&nbsp;</h2>
        <label for="Check-in-Date" class="required">Check-in Date:</label>
        <script>
            DateInput('checkindate', true, 'DD-MON-YYYY')
        </script>

        <label for="Check-out-Date" class="required">Check-out Date:</label>
        <script>
            DateInput('checkoutdate', true, 'DD-MON-YYYY')
        </script>

        <label>
            <div style="padding-top:10px;font-size:14px;color:white;">
                <p>Total Charges: <span id="tot_charges">1995.00</span> THB
                </p>
                <p class="VAT"><span> Prices exclude VAT @ 7%</span>
                </p>
            </div>
        </label>

    </fieldset>
    <fieldset id="user-4">
        <h2>&nbsp;</h2>
        <label for="Comments" class="required">Comments :</label>
        <textarea name="Comments"></textarea>

        <div>
            <label style="padding:0;"><a href="cancellation.html" onclick="window.open('cancellation.html','popup','width=800,height=400,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">Please read our cancellation policy </a>
            </label>
            <input type="checkbox" name="checkbox" id="checkbox" value="I agree to cancellation policy">
            <label for="checkbox" id="agree" name="agree">I agree to cancellation policy</label>
        </div>
        <input type="submit" value="Submit" />
    </fieldset>
</form>


<SCRIPT LANGUAGE="JavaScript">
    function validate() {
        var frm = document.forms["form"];
        if (frm.checkbox.checked == false) {
            alert("Please Agree To Our Cancellation Policy.");
            return false;
        } else return true;

    }
</SCRIPT>


<script type="text/javascript">
    var frmvalidator = new Validator("form");
    frmvalidator.addValidation("Email", "maxlen=100");
    frmvalidator.addValidation("Email", "req");
    frmvalidator.addValidation("Email", "email");
    frmvalidator.addValidation("Phone", "req");
    frmvalidator.addValidation("Phone", "maxlen=100");
    frmvalidator.addValidation("Phone", "numeric");
    frmvalidator.setAddnlValidationFunction(validate);
</script>

姓名:
电邮:
电话:
住宿类型:
别墅
一床公寓
双床公寓
入住日期:
日期输入('checkindate',true,'DD-MON-YYYY')
退房日期:
DateInput('checkoutdate',true,'DD-MON-YYYY')
总费用:1995.00泰铢

价格不含增值税@7%

评论: 我同意取消政策 函数验证(){ var frm=document.forms[“form”]; 如果(frm.checkbox.checked==false){ 提醒(“请同意我们的取消政策”); 返回false; }否则返回true; } var frmvalidator=新的验证人(“表格”); frmvalidator.addValidation(“电子邮件”,“maxlen=100”); frmvalidator.addValidation(“电子邮件”、“请求”); frmvalidator.addValidation(“电子邮件”、“电子邮件”); frmvalidator.addValidation(“电话”、“请求”); frmvalidator.addValidation(“电话”,“maxlen=100”); frmvalidator.addValidation(“电话”、“数字”); frmvalidator.setAddnlValidationFunction(验证);
试图将这样的东西整合到:

function validateTheDate() {
  var dateOK = false;
  var Today = new Date();

  if (Response_Requested_By_Object.picked.date < Today) 
    alert('Cannot select a date in the past.');
  else if (Response_Requested_By_Object.picked.yearValue > 2020) 
    alert('Cannot select dates beyond 2020.');
  else 
    dateOK = true;

  return dateOK;
}
函数validatedate(){
var-dateOK=false;
var Today=新日期();
if(响应\u请求\u由\u Object.picked.date<今日)
警报('不能选择过去的日期');
else if(响应由\u Object.picked.yearValue>2020请求)
警报('不能选择2020年以后的日期');
其他的
dateOK=true;
返回日期OK;
}

但不太确定如何使用现有的验证来实现它

这就是
validateDate
函数的外观:

function validateDate(){
  var dateOK  = false;
  var today   = new Date();
  var startDt = new Date(document.getElementById("checkin").value).getTime();
  var endDt   = new Date(document.getElementById("checkout").value).getTime();

  if (startDt < today || endDt < today)
    alert('Cannot select a date in the past.');
  else if (startDt > 2020 || endDt > 2020) 
    alert('Cannot select dates beyond 2020.');
  else if(startDt > endDt){
    alert ('Checkout date is greater than Checkin date.');
    dateOK = true;
  }
}

注意:我确信有很多(Javascript)Jquery插件非常适合验证表单和日期(使用alert并不酷)。

这就是
validateDate
函数的外观:

function validateDate(){
  var dateOK  = false;
  var today   = new Date();
  var startDt = new Date(document.getElementById("checkin").value).getTime();
  var endDt   = new Date(document.getElementById("checkout").value).getTime();

  if (startDt < today || endDt < today)
    alert('Cannot select a date in the past.');
  else if (startDt > 2020 || endDt > 2020) 
    alert('Cannot select dates beyond 2020.');
  else if(startDt > endDt){
    alert ('Checkout date is greater than Checkin date.');
    dateOK = true;
  }
}

注意:我确信有很多(Javascript)Jquery插件非常适合验证表单和日期(使用alert并不酷)。

谢谢看起来好多了,但这一行显然还是出现了代码错误-frmvalidator.setAddnlValidationFunction(validateDate)?!函数validateDate()上是否缺少右括号?它似乎已经解决了错误,但表单仍然可以submitted@user2971159:是的,缺少结束括号,当然是提交,您必须在提交之前验证表单,您需要将
onsubmit=“return validateForm();”
添加到
表单
元素,但是,答案很多,研究一下;)onSubmit=“return validate(form);”-这就是现在的情况-不会起作用吗?感谢看起来好多了,但这一行显然还是出现了代码错误-frmvalidator.setAddnlValidationFunction(validateDate)?!函数validateDate()上是否缺少右括号?它似乎已经解决了错误,但表单仍然可以submitted@user2971159:是的,缺少结束括号,当然是提交,您必须在提交之前验证表单,您需要将
onsubmit=“return validateForm();”
添加到
表单
元素,但是,答案很多,研究一下;)onSubmit=“return validate(form);”-这就是现在的情况-不起作用吗?