2014-09-24 126 views
0

在PHP中,如果输入文本“cmtx_comment”为空,表单提交上显示javascript警报。在警报中按OK后,用户在窗体中所有字段中输入的值都将消失。 ?我如何才能让用户输入的值,而无需将代码添加到输入元素的值(类似<input type="text" name="something" value="<?php echo $_GET['something'];?>">在表单提交后保留输入值(附带)

if (empty($cmtx_comment)) { //if comment value is empty 
echo <<<EOD 
<script> 
alert('Please enter a comment!'); 
</script> 
EOD; 
return false; 
} else { //if comment entered 
do stuff 
+0

您可以在客户端验证,而不是提交马上它:http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_required – juanpastas 2014-09-24 04:30:25

+1

@juanpastas W3Schools的是不是一个很好的参考。 MDN更好 – mplungjan 2014-09-24 04:39:25

+0

你在问什么?如果该字段为空,则显示一条提示,在确定该字段为空之后?这里有问题吗? – mplungjan 2014-09-24 04:44:27

回答

4

您是否尝试过的localStorage和表单验证

HTML:

<form method="post" action="" onSubmit="return saveComment();"> 
    <input type="text" name="cmtx_comment" id="cmtx_comment" value="" /> 
    <input type="submit" value="Save" /> 
</form> 

的JavaScript:

document.getElementById("cmtx_comment").value = localStorage.getItem("comment"); 

function saveComment() { 
    var comment = document.getElementById("cmtx_comment").value; 
    if (comment == "") { 
     alert("Please enter a comment in first!"); 
     return false; 
    } 

    localStorage.setItem("comment", comment); 
    alert("Your comment has been saved!"); 

    location.reload(); 
    return false; 
    //return true; 
} 

Example

在第一页加载,你都带有:

如果不输入注释,你会得到警告:

如果输入注释,你会得到一个不同的警报:

页面便会刷新(或交的,只是取消注释返回true,并发表意见location.reload),你仍然会看到你第一次发布的内容。

+0

我认为你需要清除表单验证成功后localStorage .. – 2014-09-24 05:35:08

+0

不,表单正在客户端进行验证。当页面发布/刷新时,数据应该仍然存在。 – 2014-09-24 05:36:24

+0

如果评论在验证过程中成功保存,如果用户再次进入同一页面,您的localStorage值将出现在文本框中。 – 2014-09-24 05:41:16