2011-02-03 1 views
0

Я искал ответ, почему это не работает в течение нескольких часов, и я в тупике.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) функция должна взять 3-буквенный код (в массиве iList) и заменить его именем. Предупреждения присутствуют там для целей отладки, но я не получаю ни предупреждения, когда я запускаю страницу. Есть идеи?

+0

Как сделать ассоциативный список и IList выглядеть? Должны выглядеть «a», «b», «c». Можете ли вы опубликовать представленный html вместо php – mplungjan

ответ

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]; 
      } 
     } 
    } 
+0

PS: Постельное белье здесь, в CET. Надеюсь, вы получите его на работу – mplungjan

+0

Спасибо за помощь. Я полностью не знаю, откуда я получил строку this.frmMain. Глядя на это сейчас, это очевидная проблема. Полагаю, я должен был использовать document.frmMain, но мне нравится, что ваше решение намного легче понять. – user602232

+1

Отлично, пожалуйста, примите ответ (щелкните по отметке) – mplungjan

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

  • Нет связанных вопросов^_^