在Javascript

时间:2016-02-08 12:35:16

标签: javascript asp.net

我有4 textboxes日期,每个textboxdropdownlist时间。

现在我想要的是,

  

对于每个文本框,日期可以相同,但所有下拉列表中的时间不应相等。

代表: -

如果在每个文本框中日期为

textbox1: 08/02/2016
textbox2: 08/02/2016
textbox3: 08/02/2016
textbox4: 08/02/2016

时间不应该相同,应该是

ddl1 = 9.00
ddl2 = 10.00
ddl3 = 11.00
ddl4 = 12.00

我尝试的内容如下: -

 function ValidateRecord() {
    var StrPriError = "";
    if (document.getElementById('TextBox1').value == document.getElementById('TextBox2').value || document.getElementById('TextBox3').value || document.getElementById('TextBox4').value) {
        if (document.getElementById('DrpTime').value == document.getElementById('DrpTime3').value || document.getElementById('DrpTime4').value || document.getElementById('DrpTime5').value) {
            StrPriError += "Dates and Time for RA Reminder cannot be same";
        }
    }
    if (StrPriError != "") {
        alert(StrPriError);
        return false;
    }
    else {
        return true;
    }
}

但即使添加不同的时间也无法正常工作。请建议

另外,请参阅HTML的屏幕截图

Image1

更新

日期格式为dd/MM/yyyy

1 个答案:

答案 0 :(得分:0)

你检查时间的方式是错误的。此外,如果您需要检查,则需要将所有这些检查为Date对象。

所以你需要这样做,假设这些是你的日期文本框:

  • TextBox1
  • TextBox2
  • TextBox3
  • TextBox4

时间是:

  • DrpTime
  • DrpTime3
  • DrpTime4
  • DrpTime5

现在,您需要创建四个Date个对象,其中包含两者的日期和时间。所以说:

var dt1 = new Date(document.getElementById('TextBox1').value + " " + document.getElementById('DrpTime').value);
var dt2 = new Date(document.getElementById('TextBox2').value + " " + document.getElementById('DrpTime3').value);
var dt3 = new Date(document.getElementById('TextBox3').value + " " + document.getElementById('DrpTime4').value);
var dt4 = new Date(document.getElementById('TextBox4').value + " " + document.getElementById('DrpTime5').value);

现在你需要比较是否有这两种方式,你会得到6个比较:

dt1.getTime() == dt2.getTime()
dt1.getTime() == dt3.getTime()
dt1.getTime() == dt4.getTime()
dt2.getTime() == dt3.getTime()
dt2.getTime() == dt4.getTime()
dt3.getTime() == dt4.getTime()

因此,无效值的if条件为:

if (dt1.getTime() == dt2.getTime() || dt1.getTime() == dt3.getTime() || dt1.getTime() == dt4.getTime() || dt2.getTime() == dt3.getTime() || dt2.getTime() == dt4.getTime() || dt3.getTime() == dt4.getTime())
    // Error

扩展版(仅限演示版)为:

if (
    dt1.getTime() == dt2.getTime() || dt1.getTime() == dt3.getTime() || dt1.getTime() == dt4.getTime() ||
    dt2.getTime() == dt3.getTime() || dt2.getTime() == dt4.getTime() ||
    dt3.getTime() == dt4.getTime()
)
    // Error

我们正在比较所有日期,所以即使一个条件为真,即使一个日期也等于另一个日期,你就会得到,那么你需要告诉用户这是一个错误。

确保文本框中的日期值格式为:

YYYY/MM/DD

如果没有,这将无效。

工作代码段

label {display: block;}
Dates
<label>Date 1: <input type="date" id="TextBox1"></label>
<label>Date 2: <input type="date" id="TextBox2"></label>
<label>Date 3: <input type="date" id="TextBox3"></label>
<label>Date 4: <input type="date" id="TextBox4"></label>

Times
<label>Time 1: <input type="text" id="DrpTime"></label>
<label>Time 2: <input type="text" id="DrpTime3"></label>
<label>Time 3: <input type="text" id="DrpTime4"></label>
<label>Time 4: <input type="text" id="DrpTime5"></label>

<button onclick="calc8();">Calculate</button>

<script>
  function calc8() {
    var dt1 = new Date(document.getElementById('TextBox1').value + " " + document.getElementById('DrpTime').value);
    var dt2 = new Date(document.getElementById('TextBox2').value + " " + document.getElementById('DrpTime3').value);
    var dt3 = new Date(document.getElementById('TextBox3').value + " " + document.getElementById('DrpTime4').value);
    var dt4 = new Date(document.getElementById('TextBox4').value + " " + document.getElementById('DrpTime5').value);
    if (dt1.getTime() == dt2.getTime() || dt1.getTime() == dt3.getTime() || dt1.getTime() == dt4.getTime() || dt2.getTime() == dt3.getTime() || dt2.getTime() == dt4.getTime() || dt3.getTime() == dt4.getTime())
    // Error
      alert("Equal Times Detected");
    else
      alert("Good to go!");
  }
</script>

<强>说明

  1. 对所有人使用相同的日期(比如2月1日,使用日期选择器)。
  2. 为所有人使用不同的时间(例如1:002:003:004:00)。
  3. 点击按钮,应该说好。