Javascript JS/JQuery:动态添加";“模式”;及;标题「;属性以形成输入
我有多个表单输入元素。我想为每个表单输入添加一个Javascript JS/JQuery:动态添加";“模式”;及;标题「;属性以形成输入,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我有多个表单输入元素。我想为每个表单输入添加一个pattern属性和一个title属性,但不是手动添加,而是使用JavaScript/jQuery将相同的pattern和title动态添加到每个表单输入中 这就是表单输入字段现在的样子: <input type="text" class="form-control" id="paycheck" /> <input type="text" class="form-control" id="investments" /> &l
pattern
属性和一个title
属性,但不是手动添加,而是使用JavaScript/jQuery将相同的pattern
和title
动态添加到每个表单输入中
这就是表单输入字段现在的样子:
<input type="text" class="form-control" id="paycheck" />
<input type="text" class="form-control" id="investments" />
<input type="text" class="form-control" id="otherIncome" />
最后,我发现语法是正确的。代码中的其他地方出错,无法运行该语句。这表明您应该首先确保代码中其他地方的一切都是好的 然而,我确实从中学到了一些东西,我将为其他人指出:
.attr()
函数将动态添加您指定的任何属性,因此您无需在表单元素中首先添加或更改值\d*\.?\d*
,但在DOM中它显示为d*?d*
,因此当通过jQuery发送正则表达式时,我避开了如下反斜杠:\\d*\.?\\d*
对我来说似乎很好->嗯,你是对的。。。这很奇怪……当然,模式实际上只对经过验证的表单中的必需元素有用。这些元素需要是必需的吗?将模式attr添加到初始元素中。Other wise.attr不会添加属性本身<代码>为每个匹配的元素设置一个或多个属性。。只需在输入元素上将attr留空,如
pattern=”“
。正则表达式\d*.?\d*
匹配零个或多个数字,然后匹配零个或一个句号,然后匹配零个或多个数字-因此空字符串(或单个句号字符)将由它匹配并成为有效输入。如果你想让它成为一个需要的数字,那么使用\d+(\.\d*)?\.\d+
,它将以各种格式匹配数字,包括:01234
或01234.
或012.34
或01234
,但不会匹配空字符串或单个句号字符。@MT0完美。谢谢我甚至不知道一个句号就行了。您的正则表达式工作得更好。\
是字符串和正则表达式的转义字符,您要将字符串传递给.attr()
,以便在正则表达式中使用,那么您需要转义字符串中的转义字符(即使用\
),以便它仍然存在于正则表达式中。如果比较在JavaScript中声明正则表达式的两种不同方式,您可以看到相同的结果:使用正则表达式文本/\d+/
与将字符串传递给RegExp
对象新RegExp('\\d+')的构造函数
-两者都创建相同的RE,但需要对字符串进行双转义,而不是对文本进行双转义。我遇到的问题是由于反斜杠。我通过将它们加倍来逃避它们,这解决了我的问题。
<input pattern="\d*\.?\d*" title="blah blah blah" type="text" class="form-control" id="paycheck" />
etc...
$( "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...