我正在尝试创建一个自动更新数据库中输入文本的页面。但是,每当我点击textarea时,页面似乎会自动刷新。如果我输入的速度足够快,一些文本将会通过并更新。不确定错误是什么,我也使用twitter bootstrap,如果它有启发性,将在需要时提供其余的代码。这似乎是我的代码的相关部分:
<div class="container contentContainer" id="topContainer">
<div class="row">
<div class="col-md-6 col-md-offset-3" id="topRow">
<textarea class="form-control mytext" name="thought" placeholder="Where can we help your business go?"></textarea>
</div>
</div>
</div>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
$(".contentContainer").css("min-height",$(window).height());
$("textarea").css("height",$(window).height()-0.64*$(window).height());
</script>
编辑:删除了键盘功能。
答案 0 :(得分:2)
您应该使用模糊事件将数据发布到服务器,而不是键盘事件。
sudo chmod 777 file_name
答案 1 :(得分:1)
@bpr你是否意识到你在这里使用了一个keyup事件:
$("textarea").keyup(function() {
$.post("updatethought.php", {thought:$("textarea").val()});
});
你说的是: 如果我点击任何键而不是发布!!
您需要以其他方式执行此操作,而选项将使用“模糊”。
答案 2 :(得分:1)
我使用获取,因为如果您需要它来获取建议元素列表,则比发布更快。
<script type="text/javascript">
$('.contentContainer').css('min-height',$(window).height());
$('textarea').css('height',$(window).height()-0.64*$(window).height());
$('textarea[name="thought"]').unbind(); //to be sure that aren't other triggers
$('textarea[name="thought"]').on('keyup',function(e) {
e.preventDefault();
$.get('updatethought.php', {thought:$('textarea').val()});
});
</script>
答案 3 :(得分:1)
您应该使用模糊事件将数据更新到db; 在模板的任何输入字段模糊时,对每个输入字段进行数据验证,在验证成功时执行ajax调用以更新db中的数据。这样,在将数据输入表单时,页面就不会刷新。
$("textarea").blur(function() {
updateDB();
});
$("input").blur(function() {
updateDB();
});
function updateDB(){
// do data validation
// on data validation success do ajax
}
答案 4 :(得分:0)
对不起大家,事实证明我未能在我的代码的早期部分关闭一个href,这导致它认为整个页面都是一个链接。尽管如此,所有的功能建议都非常有用且信息丰富!