2011-02-02 7 views
0
<script type="text/javascript"> 
function validateForm() { 
    if(document.date_selecting.mo.value == "Feb" && document.date_selecting.theDay.value == "31"){ 
     alert("Date Invalid"); 
     return false; 
    } 
    else if(document.date_selecting.mo.value == "Apr" && document.date_selecting.theDay.value == "31"){ 
     alert("Date Invalid"); 
     return false; 

    // Leap Years 
    else if(document.date_selecting.year.value == "1980"){ 
     alert("Invalid Year"); 
     return false; 
    } 

    return true; 
} 
</script> 

<?php 
$month = $_POST["mo"]; 
$day = $_POST["theDay"]; 
$yr = $_POST["year"]; 
if (!isset($_POST['submit'])) { // if page is not submitted; echo form 
?> 


<h2 style="margin:0; padding:0;">Date Selection</h2> 
<FORM name="date_selecting" method="POST" onsubmit="return validateForm()" action="<?php echo $PHP_SELF;?>">  
    <select name="mo" id="mo"> 
     <option disabled="disabled">SELECT MONTH</option> 
     <option>January</option> 
     <option value="Feb">February</option> 
     <option>March</option> 
     <option value="Apr">April</option> 
     <option>May</option> 
     <option>June</option> 
     <option>July</option> 
     <option>August</option> 
     <option>September</option> 
     <option>October</option> 
     <option>November</option> 
     <option>December</option> 
    </select> 
    <select name="theDay" id="theDay"> 
     <option disabled="disabled">SELECT DAY</option> 
     <option>1</option> 
     <option>2</option> 
     <option>3</option> 
     <option>4</option> 
     <option>5</option> 
     <option>6</option> 
     <option>7</option> 
     <option>8</option> 
     <option>9</option> 
     <option>10</option> 
     <option>11</option> 
     <option>12</option> 
     <option>13</option> 
     <option>14</option> 
     <option>15</option> 
     <option>16</option> 
     <option>17</option> 
     <option>18</option> 
     <option>19</option> 
     <option>20</option> 
     <option>21</option> 
     <option>22</option> 
     <option>23</option> 
     <option>24</option> 
     <option>25</option> 
     <option>26</option> 
     <option>27</option> 
     <option>28</option> 
     <option>29</option> 
     <option>30</option> 
     <option value="31">31</option> 
    </select> 

    <select name="year" id="year"> 
     <option disabled="disabled">SELECT YEAR</option> 
     <option value="2012">2012</option> 
     <option>2011</option> 
     <option>2010</option> 
     <option>2009</option> 
     <option value="2008">2008</option> 
     <option>2007</option> 
     <option>2006</option> 
     <option>2005</option> 
     <option value="2004">2004</option> 
     <option>2003</option> 
     <option>2002</option> 
     <option>2001</option> 
     <option value="2000">2000</option> 
     <option>1999</option> 
     <option>1998</option> 
     <option>1997</option> 
     <option value="1996">1996</option> 
     <option>1995</option> 
     <option>1994</option> 
     <option>1993</option> 
     <option value="1992">1992</option> 
     <option>1991</option> 
     <option>1990</option> 
     <option>1989</option> 
     <option value="1988">1988</option> 
     <option>1987</option> 
     <option>1986</option> 
     <option>1985</option> 
     <option value="1984">1984</option> 
     <option>1983</option> 
     <option>1982</option> 
     <option>1981</option> 
     <option value="1980">1980</option> 
    </select> 
<INPUT TYPE="submit" value="Send" name="submit" /> 
</FORM> 
<? 
} else { 
echo "You chose: " . " ". $month . " ".$day . ", ". $yr; 
} 
?> 

Отсутствует скобка :) - Еще раз спасибо!Неисправность Внедрение JavaScript для определения недействительных дат

+0

Не 'selectedIndex' дать вам номер? т.е.: не «февраль»? – cHao

+0

Это ваш пятый вопрос по этой же проблеме. Надеюсь, вы заработаете это однажды. Удачи ':)' –

+0

Я обновил свой ответ после вашего обновления вопроса. – Pierre

ответ

0

попробуйте вместо этого:

<script type="text/javascript"> 
var month = document.getElementById('mo').value; 
var day = document.getElementById('tDay').value; 

if(month == "Feb" && day == "31"){ 
     alert ("Date Invalid"); 
} 
</script> 
2

Вы вводите в заблуждение selectedIndex (который является числовым индексом выбора (начиная с 0)) и фактическим содержимым опции.

Как сказал Хуан Мендес, вы можете получить содержимое с помощью значения свойства:

if(document.date_selecting.mo.value == "February" && ...) 

Я рекомендую использовать значение в параметрах быть Ланг-независимый:

<option value="Feb">Febuary</option> 

И затем:

if(document.date_selecting.mo.value == "Feb" && ...) 

...

ok Вы редактировали свой вопрос.

Теперь ваша проблема в том, что JavaScript никогда не вызывается. (фактически он выполняется при загрузке страницы и все это). Если вы хотите проверить свою форму с помощью JS, вам следует использовать функцию, которая возвращает ложь, если есть ошибка:

<script type="text/javascript"> 
function validateForm() { 
    if(document.date_selecting.mo.value == "Feb"){ 
     alert ("Date Invalid"); 
     return false; 
    } 
    return true; 
} 
</script> 

И называют это, когда форма была отправлена:

<form ... onsubmit="return validateForm()"> 
+0

Примечание, чтобы сделать его более простым, элемент select имеет свойство value, так что 'selElement.options [selElement. selectedIndex] .value' всегда равно 'selElement.value', что экономит много нажатий клавиш. –

+0

Спасибо, обновлено! – Pierre

+0

@Pierre - Все еще не работает. Код обновляется. – Jshee

0

Простейшим изменение вашего кода - использовать .value везде, где вы используете .selectedIndex. Как и другие, упомянутые, selectedIndex - это число, индекс в массив опций. Кроме того, пожалуйста, принять к сведению предложение Пьера об использовании значения в вашем < опции > ы

Смежные вопросы