RT,想实现在表单提交后,清空文本框里的内容。
索性把代码全部贴出来了
<style type="text/css">
@import url(read/template/common_read.css);
</style>
  
<script src="read/js/jquery.js"></script>
<script src="read/js/jquery.form.js"></script>
<script language="javascript" type="text/javascript" src="read/js/read_view.js"></script>
<form id="commentform" name="commentform" action="" method="post" class="quickpost">
<ul>
<li><span class="star">推荐程度:
<span id="star1" onmouseover="star(1)" <!--{if $Ping[starsnum]>=1}--> class="choice" <!--{/if}-->>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span id="star2" onmouseover="star(2)" <!--{if $Ping[starsnum]>=2}--> class="choice" <!--{/if}-->>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span id="star3" onmouseover="star(3)" <!--{if $Ping[starsnum]>=3}--> class="choice" <!--{/if}--> >&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span id="star4" onmouseover="star(4)" <!--{if $Ping[starsnum]>=4}--> class="choice" <!--{/if}-->>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span id="star5" onmouseover="star(5)" <!--{if $Ping[starsnum]>=5}--> class="choice" <!--{/if}-->>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span id='txtStar'></span> </span>
<input type="hidden"  name="starsnum" id="starsnum" value="" > 
</li>

<li><textarea id="comment_message" onkeydown="ctrlEnter(event, 'commentsubmit_btn');" name="message" style="height:200px;" ></textarea></li>
<li>
<input type="hidden" name="refer" value="$_SGLOBA['refer']" />
<input type="hidden" name="subject" value="$book[subject]" />
<input type="hidden" name="id" id="id" value="$book[id]">
<input type="hidden" name="dangdangid" id="dangdangid" value="$book[dangdangid]"> <input type="hidden" name="union_dangdang" id="union_dangdang" value="$_SCONFIG[read][union_dangdang]">
<input type="hidden" name="amazonid" id="amazonid" value="$book[amazonid]">
<input type="hidden" name="union_amazon" id="amazonid" value="$_SCONFIG[read][union_amazon]">

<input type="hidden" name="commentsubmit" value="true" />
<input type="hidden" name="formhash" value="<!--{eval echo formhash();}-->" />
<input type="button" id="commentsubmit_btn" name="commentsubmit_btn" class="submit" value="发表" />&nbsp;&nbsp;&nbsp;&nbsp;[不的少于<font color="red">200</font>汉字]
<span id="comment_status"></span>
</li> </ul>
</form>就是想实现,点击发表后,清空comment_message表单里的值,我使用了如下代码
首先是定义一个javascript,如下<script ...>
function submit_realtime(){
        documet.commentform.submit();
        documet.commentform.comment_message.value='';
}
</script>然后在<input type="button" id="commentsubmit_btn" name="commentsubmit_btn" class="submit" value="发表" />&nbsp;&nbsp;&nbsp;&nbsp;[不的少于<font color="red">200</font>汉字]里添加 onclick='submit_realtime()'。结果是原来的异步提交数据的效果不见了,页面也刷新了,但就是看不到发表的评论,必须手工刷新一次,才能看到评论的内容。如果我取消onclick=‘submit_realtime()’,则可以实现异步提交数据(提交评论不刷新页面),但是评论完后,评论框里的内容不会清空。搞了一天也没弄明白怎么回事
各位大侠,看看有什么好办法,能实现在表单提交后清空文本框里的内容,谢谢了
(我学PHP很怪,没一点基础直接上项目,也没人指导我,真悲剧,打算在这个项目了结后好好学习学习)

解决方案 »

  1.   

    你的form的action没有值,submit提交给谁处理?
      

  2.   

    submit是直接提交数据给action中的程序处理的(非异步处理),submit之后当前网页就转到action的程序去了,直到action中的程序重新输出网页内容或者转向其他网页。
    你在submit按钮的onclick事件中不应该使用submit而是,Ajax的异步提交,类似下面的程序:
    function submit_realtime() {
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
    } else {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
    //接收返回值得处理函数,
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    //在这里将Text area清空
    documet.commentform.comment_message.value='';
    }
    }
    xmlhttp.open("POST", "你的action处理程序", true); // true表示异步处理
    xmlhttp.send();
    }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","ajax_info.txt",true);
    xmlhttp.send();
    }
      

  3.   

    你都引用jquery.js了,就直接用jquery的语法去写多简单。
    还自己写了个ajax的处理函数。
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                //在这里将Text area清空
                documet.commentform.comment_message.value='';
            }你先把documet.commentform.comment_message.value='';换成alert('succ!');
    看看这里是否能成功执行。实在不行,你就把清空文本框的操作放在点击提交按钮的事件上。
      

  4.   

    xmlhttp.readyState == 4和xmlhttp.status == 200这两个条件,并不一定一起出现。你先去查下这两个状态值分别是什么意思。
      

  5.   

    documet.commentform.submit();
            documet.commentform.comment_message.value='';
    你先 submit 了,再清空,己经执行不到了。你提交时传一个参数到本页,本页载入时,接受参数,再清空,
      

  6.   

    用document.getElementById("").value="";
    获取直接用empty()
      

  7.   

    用AJAX,在提交完后,让文本框为空
      

  8.   

    谢谢各位的答复,问题我已经解决了。是ShadowSniper提醒了我,我对read_view.js作了改动
    我把我改动的部分贴出来,供大家做个参考
    jquery('#commentsubmit_btn').attr({"disabled":"disabled"});//规定时间内只允许发表一次评论(需求就这么定的)
    jquery('#comment_message').attr({"value":""});//内容提交后清空表单
    之后就运行成功了。
      

  9.   

    你的好象是jquery的。
    在你异步提交的事件里的返回成功的地方(也就是success: 里),加上:$("#comment_message").val("");
      

  10.   

    虽然时间比较长了,但还是值得讨论一下。
    这里提交如果不想页面刷新,可以返回个false,
    但异步提交主要是用ajax实现。所以这里onclick最好用ajax提交、获取。
    然后就是这样原理,具体实现就不多说了。