JavaScript onsubmit clearcontent не работающий

<textarea onfocus=" javascript:clearContents(this); this.cleared=true;" rows="5" cols="40" id="comment" name="comment" <?php if($vis["username"] == $pusername) { echo "DISABLED"; } ?>>...</textarea>
<input onsubmit="if (!this.comment.cleared) clearContents(this.comment); return true;" type="submit" name="Submit" value="Stem!"/> 

function clearContents(element) {
  element.innerHTML = '';
}

Эта работа привычки, и я не могу выяснить почему. Что это делает: очищает содержание, если это не был onfocus/clicked на человеком

1
задан Karem 13 June 2010 в 21:44
поделиться

2 ответа

clearContents( document.getElementById('comment') )

Вы должны привязать onsubmit к

и сделать это ненавязчиво, в идеале...

1
ответ дан 2 September 2019 в 23:47
поделиться
<input onsubmit="if (!this.comment.cleared)

это и есть . Элементы ввода не имеют события submit или свойства comment . Возможно, вы захотите разместить это в окружающем элементе :

<form onsubmit="if (!this.comment.cleared) ...

Хотя это можно поместить на кнопку отправки, вам придется использовать onclick = "if (! this.form.comment.cleared) ... , чтобы перейти вверх к форме и вниз к другому входу. Как правило, не рекомендуется привязывать код отправки формы к определенной кнопке.

Как сказал Медер , делать все это во встроенных обработчиках событий немного некрасиво. (Особенно ненужный префикс javascript: .) Предпочитаю назначать вместо этого из JS:

<form id="someform" method="post" action="somewhere"><div>
    <textarea
        rows="5" cols="40" name="comment"
        <?php if($vis['username']==$pusername) { ?>disabled="disabled"<?php } ?>
    >
        ...
    </textarea>
    <input type="submit" name="Submit" value="Stem!" />
</div></form>

<script type="text/javascript">
    var f= document.getElementById('someform');
    var cleared= false;
    f.elements.comment.onfocus= function() {
        f.comment.value= '';
        cleared= true;
    };
    f.onsubmit= function() {
        if (!cleared)
            f.comment.value= '';
    };
</script>

Я использовал синтаксис XHTML для атрибута disabled (поскольку вы, кажется, используете синтаксис XHTML в другом месте) и использовали значение для очистки содержимого. Не используйте innerHTML - он не делает то, что вы думаете, кроме случаев, когда он случайно из-за ошибок браузера. Для доступа к полям формы всегда необходимо использовать значение .

1
ответ дан 2 September 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: