Html<输入模式>使用JavaScript处理-超过时失败
Html <input pattern> handling with JavaScript - fails on exceed
我在处理HTML <input>
pattern
属性时遇到问题。我想根据图案的要求改变指示器的颜色。直到输入为3个字符长,它才会变为绿色,但当输入超过20个字符时,它不会再次变为红色。这是HTML代码:
<p>
<canvas id="Circle6" width="30" height="30"></canvas>
Imię
<input type="text" pattern=".{3,20}" required title="3-20 characters required" id="FirstName" oninput="checkInput(id, name)" name="Circle6">
</p>
和Javascript函数:
function checkInput(id, name) {
var input = document.getElementById(id);
isValid = input.value.search(new RegExp(input.getAttribute('pattern'))) >= 0;
var c = document.getElementById(name);
var ctx = c.getContext("2d");
if (isValid)
ctx.fillStyle = "green";
else ctx.fillStyle = "red";
ctx.fill();
}
行CCD_ 3取自HTML5"的Javascript回退;图案";<输入>
编辑:圆圈由在页面加载时绘制
function drawCicle(elementid) {
var c = document.getElementById(elementid);
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(15, 15, 10, 0, 2 * Math.PI);
ctx.stroke();
}
您应该使用.test
而不是.search
,因为只要您的输入超过3个字符,后者就会返回匹配项(换句话说,如果您的输入字符串超过20个字符,您仍然会返回一个数组(计算结果为true)。
此外,您必须将regex模式锚定到字符串的前^
和后$
,因此只需将前者前置,并将后者附加到模式属性值:new RegExp('^'+input.getAttribute('pattern')+'$')
。
function checkInput(id, name) {
var input = document.getElementById(id),
re = new RegExp('^'+input.getAttribute('pattern')+'$'),
c = document.getElementById(name),
ctx = c.getContext("2d");
if (re.test(input.value))
ctx.fillStyle = "green";
else ctx.fillStyle = "red";
ctx.fill();
}
请在此处查看小提琴:http://jsfiddle.net/teddyrised/pmdye1y0/3/
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- ajaxToolkit PopupControlExtender不工作.过时的
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何处理10页以上的静态页眉/页脚
- 将事件处理程序绑定到任何可能的事件
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- python到“;流“;字典处理
- 使用javascript进行实时图像处理
- 导入jQuery脚本获胜'我不处理html文件
- 在Backbone.js中使用WebDriver时处理过时元素
- AngularJS应该如何处理由于过时的XSRF令牌而导致的$http.post 中的403错误