функция onBlur не выполняется - PullRequest
0 голосов
/ 04 февраля 2011

Я искал ответ, почему это не работает в течение нескольких часов, и я в замешательстве.

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

1 Ответ

1 голос
/ 04 февраля 2011

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];
            }
        }
    }
...