Функция onBlur не выполняется
Я искал ответ, почему это не работает в течение нескольких часов, и я в тупике.
Вот сценарий, включающий JavaScript и соответствующую форму.
<script language="Javascript" type="text/javascript">
function complete(init){
alert ("in function with " + init);
var aList = new Array(<?php echo $aList; ?>);
var iList = new Array(<?php echo $iList; ?>);
for (var i = 0; i < iList.length; i++){
if (init == iList[i]){
alert ("replacing " + init + " with " + aList[i]);
this.frmMain.txtAtty.value = aList[i];
}
}
}
</script>
<FORM METHOD="POST" NAME="frmMain" ACTION=<?php echo $_SERVER["PHP_SELF"]; ?>>
<table width="75%" align="center">
<tr>
<td width="25%" align="right">Name:</td>
<td>
<input type="text" name="txtSender" size="30" value=""/><span class="noteText"> Your Name</span>
</td>
</tr>
<tr>
<td width="25%" align="right">Attorney:</td>
<td>
<input type="text" name="txtAtty" size="30" value="" onblur = "complete(this.value)">
</td>
</tr>
Два эхо-оператора PHP являются параметрами для массивов. Предполагается, что полная функция (this.value) берет трехбуквенный код (в массиве iList) и заменяет его именем. Предупреждения находятся там для целей отладки, но я не получаю ни одного предупреждения, когда я запускаю страницу. Есть идеи?
1 ответ
this.frmMain нигде не определен
менять
onblur = "complete(this.value)"
в
onblur = "complete(this)"
и использовать
function complete(field){
var init = field.value;
alert ("in function with " + init);
var aList = new Array(<?php echo $aList; ?>);
var iList = new Array(<?php echo $iList; ?>);
for (var i = 0; i < iList.length; i++){
if (init == iList[i]){
alert ("replacing " + init + " with " + aList[i]);
field.value = aList[i];
}
}
}