jquery将不可写值保存到变量?

时间:2011-03-18 11:18:52

标签: jquery input user-input

嘿伙计们, 我想知道如何以最好的方式解决这个问题: 我有一个表格,它将当前日期保存为值。

<form class="form" method="post" action="">
        <input type="text" value="<?php echo date("m.d.y"); ?>"/>
</form>

我想知道如何用jquery保存这个值,并在模糊后将其返回到字段中。 想象一下以下情况。 1.)该字段保存当前日期。 2.)用户删除输入值并输入新值。 3.)用户决定再次删除该值并在字段外单击。然后它变得模糊,它应该保持原始值(日期)。

var cv = '';
$('input').focus(function() {
    cv = $(this).val();
});

$('input').blur(function() {
    if ( $(this).val() == '' ) {
        $(this).val(cv);
    }
});

解决这个问题的最佳方法是什么?我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:0)

我会将原始值保存在focus上,但页面已加载(onready):

var cv;
$(function() {
    cv = $("input").val();
});

答案 1 :(得分:0)

您描述的模糊/焦点行为听起来像HTML中的placeholder属性。例如:

<input type="text" placeholder="e.g. John Doe">

因此,在您的情况下,您只需使用placeholder代替value

<input type="text" placeholder="<?php echo date("m.d.y"); ?>">

您也可以同时使用它们:

<input type="text" value="<?php echo date("m.d.y"); ?>" placeholder="<?php echo date("m.d.y"); ?>">

这样,当页面加载时会输入当前日期,但是当字段被清除然后模糊时,当前日期将重新显示为占位符文本。

(请注意,您应该使用<input type=date>作为日期输入,但这与您的问题无关。)

@placeholder适用于最新的Chrome,Safari,Opera和Firefox 4。

对于本机不支持此属性的浏览器,您可以使用JavaScript。

如果你正在使用jQuery,你可以考虑使用my placeholder plugin for jQuery,这是我见过的最强大的解决方案。这是一个演示页面:http://mathiasbynens.be/demo/placeholder