动态更改输入字段的占位符?

时间:2014-06-16 18:15:44

标签: javascript jquery html angularjs d3.js

我正在使用Javascript和d3库以及AngularJS。

有没有办法动态更改输入框的占位符?我正在使用日历小部件和多个视图,并想看看是否有办法让占位符始终是最后输入到字段中的值。

我写了一个小函数,它总是返回输入到输入字段的最后一个东西......但是当我尝试设置placeholder = functionIwrote()时,它实际上使占位符“fucntionIwrote()”而不是运行函数

6 个答案:

答案 0 :(得分:1)

我无法发表评论但是......如果你正在使用angularJs,你只需要将输入的模型绑定到占位符!

<input type="date" placeholder="myModel" ng-model="myModel" />

这样,您的输入将始终是最新的填充值。

如果您想要更改视图,然后检索数据,则必须将它们存储在控制器范围之外 - 这是&#34;清理&#34;每次如果您使用ngIf指令 - 。

执行此操作的一种好方法是将服务用作持久层。

答案 1 :(得分:1)

由于您希望placeholderautomatically都更改或更新dynamically,因此您可以使用以下jQuery代码:

$(function() {
    $('input').on('change blur', function() {
        !this.value || $(this).attr('placeholder', this.value);
    });
});

WORKING JS FIDDLE DEMO

答案 2 :(得分:1)

是的,你可以这样做,

<input 
placeholder="Select Date" 
onfocus="(this.type='date')" 
onblur="if (!this.value) this.type = 'text'">

答案 3 :(得分:0)

这是一个小提琴:http://jsfiddle.net/bBh3L/

&#39;占位符&#39;是一个元素属性,因此您可以使用$(&#39; #myInput&#39;)。attr(attributeName,attributeValue)来设置它。

在这种情况下,我映射了按钮单击以使用以下方式更改占位符:

$('#myInput').attr('placeholder', 'new one');

答案 4 :(得分:0)

我猜你是否正在尝试将日历小部件包装成角度指令,如果是这样的话,这就是我为类似用例所做的事情(我将接受/有效格式显示为占位符):

module.directive('yourDirective', [function() {
  return {
    link: function($scope, $element, $attrs, $controller) {

      // bind 'yourValue' (the one you want to show as placeholder) in the scope
      $scope.$watch('yourValue', function(value) {
        $attrs.$set('placeholder', value);
      });
    }
  };
}]);

答案 5 :(得分:0)

AngularJS ng-attr-{property_name}

中存在一个条件属性属性

例如,我对使用

的不同搜索选项使用了不同的占位符

 ng-attr-placeholder="{{isAdvanceSearch ? setPlaceholder(searchOption) : 'John Smith, 08/23/1970, 123'}}"

这里基于isAdvanceSearch变量,我在setPlaceholder方法中设置了不同的占位符。

setPlaceholder方法返回占位符,以在输入字段中进行设置。

$scope.setPlaceholder = function(searchOption) {
     if (searchOption === "foo") {
          return "Search by foo… e.g. foo1";
     } else if (searchOption === "bar") {
          return "Search by bar… e.g. bar123";
     } else {
          return "John Smith, 08/23/1970, 123";
     }
};

注意:John Smith, 08/23/1970, 123是默认的占位符。 不要忘记将表达式包装在{{}}括号中。