gpt4 book ai didi

javascript - Firefox(v 3.6 [和可能的其他版本] 不在页面刷新时重置变量值

转载 作者:行者123 更新时间:2023-11-29 20:23:54 24 4
gpt4 key购买 nike

我正在处理一个管理页面以向站点添加文章。其中两个字段(“标签”和“资源”)仅以一次分别标记为“标签 1”和“资源 1”的实例开始。

使用 jQuery,我允许用户添加额外的标签和/或资源(“标签 2”、“标签 3”等),并且它几乎 可以按我的意愿工作。如果页面是新鲜加载的(无刷新),该函数会正确计算添加实例 2、3、4...

但是...... 如果我刷新页面(在我的例子中是 COMMAND-R),将显示一个实例(我想要发生的事情)并且计数从我停止的地方开始开始添加标签,这样计数就会像这样进行:标签 1、标签 6、标签 7、标签 8 等。

这只发生在 Firefox 中(目前已在 Safari、IE6 和 IE7 中测试过)。

知道是什么导致了这种行为。

下面的 jQuery 脚本:

// Functions for adding additional tags and resources to articles
$(document).ready(function(){
$(".tag:last").addClass("last-tag");
$(".resource:last").addClass("last-resource");

t = null;
t = $("#tag-count").val();

r = null;
r = $("#resource-count").val();

$(".add-tag").click(function () {
t++;
$(".last-tag")
.removeClass("last-tag")
.after("<li class=\"form-item last-tag\"><label for=\"tag-"+ t +"-input\">Tag "+ t +"</label><input type=\"text\" class=\"text-input\" name=\"tag[]\" id=\"tag-"+ t +"-input\" value=\"\" />");
$("#tag-count").val(t);
return false;
});

$(".add-resource").click(function () {
r++;
$(".last-resource")
.removeClass("last-resource")
.after("<li class=\"form-item last-resource\"><label for=\"resource-"+ r +"-input\">Resource "+ r +"</label><input type=\"text\" class=\"text-input\" name=\"resource[]\" id=\"resource-"+ r +"-input\" value=\"\" />");
$("#resource-count").val(r);
return false;
});
});

“add.php”的来源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Add an Article to Site</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<link rel="stylesheet" type="text/css" media="all" href="\\\\\SITE_ROOT\\\\\/css/admin/format.css" />
<script src="\\\\\SITE_ROOT\\\\\/scripts/jquery.js" type="text/javascript"></script>
<script src="\\\\\SITE_ROOT\\\\\/scripts/jquery.validate.js" type="text/javascript"></script>
<script src="\\\\\SITE_ROOT\\\\\/scripts/admin/admin.functions.js" type="text/javascript"></script>
</head>
<body>

<h1>Site Administration</h1>

<ul class="nav">
<li><?=anchor('admin/add/', 'Add New Article');?></li>
<li><?=anchor('admin/delete/', 'Delete an Article');?></li>
</ul>

<?=form_open('admin/article_insert');?>

<fieldset>
<legend>Article Information</legend>
<ul>
<li class="form-item">
<label for="title-input">Title</label>
<input type="text" class="text-input" name="title" id="title-input" value="<?php echo set_value('title'); ?>" />
<?php echo form_error('title'); ?>

</li>
<li class="form-item">
<label for="subtitle-input">Subtitle</label>
<input type="text" class="text-input" name="subtitle" id="subtitle-input" value="<?php echo set_value('subtitle'); ?>" />
<?php echo form_error('subtitle'); ?>

</li>
<li class="form-item">
<label for="author-input">Author</label>
<input type="text" class="text-input" name="author" id="author-input" value="<?php echo set_value('author'); ?>" />
<?php echo form_error('author'); ?>

</li>
<li class="form-item">
<label for="category-input">Category</label>
<input type="text" class="text-input" name="category" id="category-input" value="<?php echo set_value('category'); ?>" />
<?php echo form_error('category'); ?>

</li>

<input type="hidden" id="tag-count" name="tag-count" value="1" />
<li class="form-item tag">
<label for="tag-1-input">Tag 1</label>
<input type="text" class="text-input" name="tag[]" id="tag-1-input" value="" />
<a href="#" class="add-tag">Add Another Tag</a>
<?php echo form_error('tag[]'); ?>

</li>
<li class="form-item">
<label for="content-input">Article Content</label>
<textarea name="content" id="content-input" rows="10"><?php echo set_value('content'); ?></textarea>
<?php echo form_error('content'); ?>

</li>
<li class="form-item">
<label for="excerpt-input">Excerpt Content</label>
<textarea name="excerpt" id="excerpt-input" rows="6"><?php echo set_value('excerpt'); ?></textarea>
<?php echo form_error('excerpt'); ?>

</li>

<input type="hidden" id="resource-count" name="resource-count" value="1" />
<li class="form-item resource">
<label for="resource-1-input">Resource 1</label>
<input type="text" class="text-input" name="resource[]" id="resource-1-input" value="" />
<a href="#" class="add-resource">Add Another Resource</a>
<?php echo form_error('resource[]'); ?>

</li>
<li class="form-item">
<label for="url-input">URL</label>
<span class="pre-input-span"><?=base_url()?></span><input type="text" class="text-input" name="url" id="url-input" value="<?php echo set_value('url'); ?>" />
<?php echo form_error('url'); ?>

</li>
<li class="form-item">
<label for="submit-input">Submit</label>
<input type="submit" name="submit" id="submit-input" value="Submit Article" />
</li>
</ul>
</fieldset>

</form>

<p><br />Page rendered in {elapsed_time} seconds</p>

</body>
</html>

最佳答案

这是因为您将标签计数存储在隐藏字段中。默认情况下,Firefox 允许您在不丢失输入数据的情况下刷新页面,因此标签计数不会刷新。

您可以执行三种(或更多)操作中的一种来修复它。

1) 我相信你可以使用 defaultValue 来获取初始值,但我找不到浏览器支持列表(更新: 刚刚测试在 IE6、IE7、IE8、FF2、FF3、FF3.6、Safari 4、Chrome 3 中,此解决方案效果很好。):

var t = null;
t = $("#tag-count")[0].defaultValue;

var t = null, tag_count = $("#tag-count");
tag_count.val( tag_count[0].defaultValue ); // Update the old value with the correct one
t = tag_count.val();

2) 只需使用一个普通变量来存储标签计数,它会在每次加载时重置

t = null; 更改为 var t = 1; 并只使用它,但删除对 $("#tag-count") 的任何调用。如果您需要服务器上的信息,请添加:

$("form").submit(function(e){
$("#tag-count").val(t);
});

3) 像您一样使用该字段,但在页面加载时重置它:

$("#tag-count").val(1); // Assumes it always starts at 1

关于javascript - Firefox(v 3.6 [和可能的其他版本] 不在页面刷新时重置变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com