0

我正在获取输入框的值并将其作为查询字符串传递给 URL。我不想获取默认值“输入关键字(地址....),它通过以下方式控制显示或隐藏:

    //**onClick and OnLostFocus (focus and blur) events on textareas and input textboxes**
   $('input[type="text"], textarea').focus(function () {
        defaultText = $(this).val();
        $(this).val('');
    });
    $('input[type="text"], textarea').blur(function () {
        if ($(this).val() == "") {
            $(this).val(defaultText);
        }
    }); 


<input name="KeywordBox" class="BasicSearchInputBox" type="text" size="300" value="Enter Keywords (address,city and state OR zipcode)"/> 

如何不获取默认文本而仅获取用户输入?在jQuery中?

4

4 回答 4

1

我通常会在输入字段中添加一些默认的类名,然后在用户键入时将其清除。这样我就可以判断是否存在默认的“水印”文本或用户数据。

于 2012-02-29T22:13:31.177 回答
0

您上面的代码并没有真正执行默认值(占位符)。如果有人首先在字段中键入“任何内容”,然后从该字段中清除值,您的代码会将其重置为“任何内容”而不是“输入关键字...”

你需要一个像http://archive.plugins.jquery.com/project/defaultvalue这样的插件

<input placeholder="Enter a username…" type="text">
<input placeholder="…and a password" type="password">
<script>
$(' [placeholder] ').defaultValue();
</script>

如果你真的想自己写,最简单的步骤是

  • 在输入字段中添加占位符属性
  • onfocus:如果 input.value 等于 input.placeholder,则清除 input.value
  • onblur:如果 input.value 为空,则将 input.value 设置为 input.placeholder
于 2012-02-29T22:20:10.597 回答
0

做到这一点的正确方法是使用placeholder和回退旧浏览器。
对于您当前的问题,您可以在获取值时检查该默认文本。就像是:

$('form').submit(function(){
    if (~$('input').val().indexOf(defaultText)) {
        // Not found, do your ajax stuff
    }
});
于 2012-02-29T22:17:46.570 回答
0

你可以这样做:

function togglePrompt() {
  if (this.value == this.defaultValue) {
    this.value = '';
  } else if (this.value == '') {
    this.value = this.defaultValue;
  }
}

window.onload = function() {
  var el = document.getElementById('inp0');
  el.onfocus = togglePrompt;
  el.onblur = togglePrompt;
}


<input value="Enter text..." id="inp0">
于 2012-02-29T23:15:23.373 回答