【问题标题】:How not to grab default value of inputbox如何不获取输入框的默认值
【发布时间】:2012-02-29 22:10:53
【问题描述】:

我正在获取输入框的值并将其作为查询字符串传递给 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 中?

【问题讨论】:

  • 改用 onchange 事件并检查输入的文本是否不是默认文本。

标签: javascript jquery inputbox


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    执行此操作的正确方法是使用 placeholder 并为旧版浏览器回退。
    对于您当前的问题,您可以在获取值时检查该默认文本。比如:

    $('form').submit(function(){
        if (~$('input').val().indexOf(defaultText)) {
            // Not found, do your ajax stuff
        }
    });
    

    【讨论】:

      【解决方案3】:

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

      你需要一个像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

      【讨论】:

        【解决方案4】:

        你可以这样做:

        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">
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-28
          • 2013-10-14
          • 2011-06-03
          • 2014-06-03
          • 2020-01-24
          • 2021-11-05
          • 2019-10-18
          • 1970-01-01
          相关资源
          最近更新 更多