JS / JQuery:动态添加“pattern”和“title”属性以形成输入

时间:2013-12-07 22:24:39

标签: javascript jquery html html5 forms

我有多个表单输入元素。我想为每个属性添加pattern属性和title属性,但不是手动添加,我想动态添加相同的patterntitle每个表单输入使用JavaScript / jQuery。

这就是表单输入字段现在的样子:

<input type="text" class="form-control" id="paycheck" />
<input type="text" class="form-control" id="investments" />
<input type="text" class="form-control" id="otherIncome" />

作为最终结果,我希望每个表单输入看起来如下所示:

<input pattern="\d*\.?\d*" title="blah blah blah" type="text" class="form-control" id="paycheck" />
etc...

作为示例,我为pattern属性尝试了以下内容,但它们都不起作用:

$( "input" ).attr("pattern", '\d*\.?\d*');
$( "input" ).attr("pattern",  \d*\.?\d* );
$( ".formClass input" ).attr("pattern", '\d*\.?\d*');

$( "input" ).prop("pattern", '\d*\.?\d*');
$( "input" ).prop("pattern",  \d*\.?\d* );
$( ".formClass input" ).prop("pattern", '\d*\.?\d*');

...imagine something similar for the title attribute...

1 个答案:

答案 0 :(得分:7)

最后,我发现语法是正确的。代码中的其他地方发生了一个错误,导致该语句无法运行。只是表明你应该始终确保代码中其他地方的一切都很好。

然而,我确实从中学到了一些我会为其他人注意的事情:

  1. jQuery .attr()函数将动态添加您指定的任何属性,因此您无需先在表单元素中添加pattern="",以便添加或更改值。
  2. 重要的是,如果要使用jQuery动态添加正则表达式,则需要使用ESCAPE某些字符。
  3. 正则表达式最初是\d*\.?\d*但是在DOM中它显示为d*.?d*所以当通过jQuery发送正则表达式时,我转义了反斜杠,如下所示:\\d*\\.?\\d*

    1. 最后,我没有必要让正则表达式所需的字段工作。如果我在字段中包含不正确的文本,HMTL5验证只会给我一个错误,当它抛出错误时,表单未提交。如果我将字段留空或在字段中放入正确的文本,则不会抛出任何错误。如果我错了,我可以解释一下。