Javascript onsubmit clearcontent无法正常工作

时间:2010-06-13 21:44:11

标签: javascript

<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 = '';
}

这不会起作用,我无法弄清楚原因。它的作用:如果内容没有被人聚焦/点击,则清除内容

2 个答案:

答案 0 :(得分:1)

clearContents( document.getElementById('comment') )

你应该将onsubmit绑定到<form>并且不引人注意地执行此操作,理想情况下......

答案 1 :(得分:1)

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

this<input>。输入元素没有submit事件或comment属性。可能你想把它放在周围的<form>元素上:

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

虽然可以将其放在提交按钮上,但您必须使用onclick="if (!this.form.comment.cleared) ...,向上导航到表单并向下导航到其他输入。将表单提交代码绑定到特定按钮通常不是一个好主意。

正如meder所说,在内联事件处理程序中完成所有这些操作有点难看。 (特别是不必要的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语法(因为您似乎在其他地方使用了XHTML语法),并使用value来清除内容。不要使用innerHTML - 它不会按照您的想法执行,除非由于浏览器错误而巧合。应始终使用value访问表单字段。