1

我必须在 ASP.net 页面的文本字段中添加默认灰色文本,如下所示:

图片01

当用户单击/输入字段时,默认文本会消失。

如何在文本框事件中执行此操作?

我设法实现 onFocus 事件来更改文本颜色;在我的.aspx页面中,我<script>为 JS 代码创建了一个标签:

<script type="text/javascript">
    function test(obj) {
        obj.style.color = "grey";
    }
</script>

后面的代码:

txtBox.Attributes.Add("OnFocus", "test(this)")
'txtBox is the ID of text Box

现在,关于 JavaScript OnFocus 事件的非常基本的问题令人尴尬。

但是问题是知识的关键:)

编辑:我不能在我的 ASP.Net 页面中使用任何 HTML 标签

有什么帮助吗?谢谢。

4

5 回答 5

2

尝试使用 jQuery

如何实现 jQuery:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

html:

<input type="text" />

CSS:

.grey { color:#aaa; }

jQuery:

var inputval = "";
$(document).ready(function() {
    // Define your default value to show on input
    $("input[type='text']").val("Enter your text here...");
    // Add grey color or optionally blur effect
    $("input[type='text']").addClass('grey');
    // Save your default value
    inputval = $("input[type='text']").val();
    $("input[type='text']").focusin(function() {
    // if textbox is empty or got the default value
    if ($(this).val() == "" || $(this).val() == inputval) {
        // Clear the box
        $(this).val("");
        // Remove grey color
        $(this).removeClass('grey'); }
    }).focusout(function() {
        // if textbox is empty
        if ($(this).val() == "") {
            // Put your Default value back
            $(this).val(inputval);
            // Add grey color
            $(this).addClass('grey'); }
    });
});

jsfiddle:http: //jsfiddle.net/BerkerYuceer/SWc6g/

这实际上是一个非常糟糕的编码,但它应该让你了解它是如何工作的。

编辑:这是更有效的版本

html:

<input type="text" />

jQuery:

$(document).ready(function() {
    Watermark("input[type='text']","Enter your text here...");
});

function Watermark(element, WatermarkString) {
    $(element).val(WatermarkString).css('color','#aaa');
    $(element).focusin(function() {
        if ($(this).val() == "" || $(this).val() == WatermarkString) {
            $(this).val("").css('color','#000'); }
    }).focusout(function() {
        if ($(this).val() == "") {
            $(this).val(WatermarkString).css('color','#aaa'); }
    });
};

jsfiddle:http: //jsfiddle.net/BerkerYuceer/vLJ2U/

于 2012-10-10T13:34:01.127 回答
1

有可能产生这样的东西吗?

<input type="text" placeholder="Enter your text here..." />

因此,您需要实际将此placeholder="Enter your text here..."属性添加到<input />标签中。

于 2012-10-10T11:58:31.987 回答
1

这是你的意思吗?

<html>
<head></head>
<body>
    <input id="serachbox" type="text" onFocus="initText(this);" />

    <script type="text/javascript">

        var defaultText = 'Enter your serach here...'
        var initText = function(el){
            if(el.value == defaultText){
                el.value = "";
            }
        }

        var input = document.getElementById('serachbox');

        input.value = defaultText;
    </script>

</body>
</html>
于 2012-10-10T12:26:59.323 回答
1

我对 ASP.NET 一无所知,但是由于您可以添加 onfocus 侦听器,因此您应该能够执行以下操作:

txtBox.Attributes.Add("Value", "Enter your text here...")
txtBox.Attributes.Add("OnFocus", "updateValue(this)")
txtBox.Attributes.Add("OnBlur", "updateValue(this)")

其中 updateValue 函数是:

function updateValue(el) {
    if (el.value == el.defaultValue) {
      el.value = '';
    } else {
      el.value = el.defaultValue;
    }
}

上面模仿了占位符属性,它(IMO)是一个烦人的界面功能,应该很少使用。

于 2012-10-10T12:41:05.107 回答
1

我猜您正在寻找文本字段中的水印效果?

如果是这样,有几种方法可以做到这一点。

1)使用AjaxToolKit库(水印效果演示在这里
2)使用HTML + CSS + jQuery

<input type="text" id="text1" value="some text"/>
<script type="text/javascript">
  $(document).ready(function() {
    var tbval = $('#text1').val();
    $('#text1').focus(function() { $(this).val('');});
    $('#text1').blur(function() { $(this).val(tbval);});
  });
</script>

来源:

于 2012-10-10T12:54:01.990 回答