案例1:控制输入
假设你至少可以包装所有的货币值,像这样的东西:
<span class="money-value">£200.00</span>
<span class="money-value">£300.50</span>
而且你可以添加按钮声明:
<button id="secret-button">hide</button>
然后,你可以有一些jQuery代码这样做:
/**
* Simple search and replace version.
*/
$(function() {
$("#secret-button").click(function() {
$(".money-value").html($(".money-value").html().replace(/[0-9]/g,"X"));
});
});
或更先进的一个具有:
/**
* Complet version.
*
* 1) on button click, if asking to hide:
* 1.1) iterate over all entries, save their text, and replace it with markers
* 1.2) toggle the button's text to "show"
* 2) on button click, if asking to show:
* 2.1) iterate over all entries, restore previous text
* 2.2) clear the hidden store
* 2.3) toggle the button's text to "hide"
*/
$(function() {
var hiddenStore = [];
$("#secret-button").click(function() {
if ($(this).html() == "hide") {
$(".money-value").each(function() {
var text = $(this).html();
hiddenStore.push(text);
$(this).html(text.replace(/[0-9]/g,"X"));
});
$(this).html("show");
} else {
$(".money-value").each(function (i) {
var text = hiddenStore[i];
$(this).html(text);
});
hiddenStore = [];
$(this).html("hide");
}
});
});
完整的解决方案是在这里:在这里看到:http://jsfiddle.net/u79FV/
备注:
- 这不会输入外地工作值
- 这是假定您的文本项已被标记如上图所示
- 请问您要使用按钮的状态变化的东西。
- 保存这些值并放回原处。
- 即使动态添加新字段也可以工作。
- Shankar Sangoli的answer使用不同的方式保存存储的数据,您可以考虑使用不同的方式(使用jQuery
.data()
方法)。
- 您可能希望将按钮切换为
<input type="button" />
标签,在这种情况下,您将使用.val()
而不是.html()
来切换其文本。
案例2:自由输入
假设你没有对其中的值可以显示出来,那么你需要做一些更复杂的,这是在整个页面看起来控制看起来像货币格式的东西。 我建议反对它。
但是,jQuery Highlight插件可能是需要看的东西,因为它的代码做了类似的事情(因为它搜索要修改的代码段),然后您可以重用一些解决方案1以使其适合你的目的。
尽管如此,这种设计很难用傻瓜式设计。
是的,我会在课堂上包装他们。谢谢Heylem我也会研究这一点。 ;-) – Darren 2012-02-13 15:05:21
@Darren:现在查看编辑的完整解决方案。 – haylem 2012-02-13 15:07:42
Haylem!非常感谢,这完美的作品!谢谢你这么清楚地解释这一点,非常感谢! :-) – Darren 2012-02-13 15:23:00