如何在字段为$ dirty时应用ng-pattern

时间:2015-02-27 00:17:07

标签: javascript angularjs forms validation ng-pattern

我有一个输入框,上面有一个ng-pattern用于基本链接验证。 我们的PM希望我们拥有' http://'在用户开始编辑之前,文本已经在输入中...但是我不能将此文本放在那里,因为它会中断ng-pattern验证,因此不会显示。

<input type="text" ng-model="$parent.emailData.setting.button[2].link" 
 name="button2link" 
 ng-class="{invalid: step3Form.button2link.$invalid}"
 ng-pattern="link_pattern"/>

作为参考,link_pattern定义为

 $rootScope.link_pattern = /(https?:\/\/)(www)?[A-Za-z0-9.\-@_~]+\.[A-Za-z]{2,}(:[0-9]{2,5})?(\/[A-Za-z0-9\/_\-.~?&=]*)*/

我正在重述我的问题以澄清(它不是我担心的样式,已经有效) 我有没有办法让真正的文字(不是占位符)&#39; http://&#39;在我的输入字段中仍然有链接模式验证

当用户看到输入框时,我想要文本&#39; http://&#39;在那里(现在它只是一个占位符)所以他们不必自己打字。

3 个答案:

答案 0 :(得分:1)

您可以尝试:

  

ng-class =“{invalid:(step3Form.button2link。$ dirty&amp;&amp;   step3Form.button2link。$ error.pattern)}“

答案 1 :(得分:1)

我已经创建了一个可以帮助你的plunker。

http://plnkr.co/edit/GVAdjcjcYczmcmzoCqoF

<form role="form" name="signUpForm" class="form-horizontal">
  <div class="form-group">
      <label for="url" class="col-sm-4 control-label">URL</label>

      <div class="col-sm-8">
          <input type="text" class="form-control" name="url" id="url" placeholder="Enter last name"
                 ng-model="user.lastName" required="true" ng-pattern="/(https?:\/\/)(www)?[A-Za-z0-9.\-@_~]+\.[A-Za-z]{2,}(:[0-9]{2,5})?(\/[A-Za-z0-9\/_\-.~?&=]*)*/">

          <span ng-show="signUpForm.url.$dirty && signUpForm.url.$error.required">
              <small class="text-danger">Please enter valid URL.</small>
          </span>
          <span ng-show="signUpForm.url.$dirty && signUpForm.url.$error.pattern">
              <small class="text-danger">URL should have 2 to 25 characters.</small>
          </span>
      </div>
  </div>
</form>

答案 2 :(得分:0)

http://jsfiddle.net/KGd8K/839/

<div ng-app ng-controller="formCtrl">
    <form name="myForm" ng-submit="onSubmit()">
        <input type="number" ng-model="price" name="price_field" ng-pattern="/^[0-9]{1,7}$/" required /> <span ng-show="{invalid: (myForm.price_field.$dirty && myForm.price_field.$error.pattern)}">Not a valid number!</span>
        <input type="submit" value="submit" />
    </form>
</div>