JavaScript 打断文本框

标签 javascript html regex

我有一个日期选择器控件,它使用 HTML5 的“模式”属性和正则表达式进行验证。它工作正常。

<input type='text' class='date-pick' name='breakEndIE' size='8' placeholder='01-03-2011' style='max-width:100px' pattern='^(((0[1-9]|[12]\d|3[01])-(0[13578]|1[02])-                ((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)-(0[13456789]|1[012])-((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])-02-((19|[2-9]\d)\d{2}))|(29-02-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$' readonly='readonly' required />

但是,当我使用 document.write() 将它放入脚本中时,它停止工作。 (Pattern一直认为日期的格式有错误)

<script>
            var ifFFOCHR = false;
            if (navigator.appVersion.indexOf("MSIE") > -1) ifFFOCHR = false;
            else if (navigator.appVersion.indexOf("Chrome") > -1) ifFFOCHR = true;
            else if (navigator.appVersion.indexOf("Safari") > -1) ifFFOCHR = false;
            else ifFFOCHR = true;

            if (ifFFOCHR == true) 
                {
                    //FIREFOX/CHROME/OPERA CODE HERE
                    document.write("<input type='text' class='date-pick' name='breakEnd' size='8' placeholder='01-03-2011' style='max-width:100px' pattern='^(((0[1-9]|[12]\d|3[01])-(0[13578]|1[02])-((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)-(0[13456789]|1[012])-((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])-02-((19|[2-9]\d)\d{2}))|(29-02-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$' required />");
                }
            else 
                {
                    //IE/SAFARI CODE HERE
                    document.write("<input type='text' class='date-pick' name='breakEndIE' size='8' placeholder='01-03-2011' style='max-width:100px' pattern='^(((0[1-9]|[12]\d|3[01])-(0[13578]|1[02])-                ((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)-(0[13456789]|1[012])-((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])-02-((19|[2-9]\d)\d{2}))|(29-02-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$' readonly='readonly' required />");
                }
            </script>

我不知道为什么会这样。我曾多次尝试将 复制并粘贴到 document.write() 中。它在它外面工作,但不在里面。我试过让 friend 来做。 我们在另一个脚本中尝试过它,它工作正常,它就在这个脚本中中断了。

请帮忙。

仅供引用:该脚本用于在 IE 和 Safari 中显示某些代码,在 Firefox、Opera 和 Chrome 中显示不同的代码。

最佳答案

一个很大的可能性是您有转义字符,例如\d 在您的正则表达式字符串中。当 pattern 属性被内联添加时,这些字符被视为文字字符,但 \ 被放置在 javascript 字符串中时具有不同的含义。

因为您现在已经将该表达式包装在一个字符串中,您可能需要转义 \ 字符,例如\\d

尝试将您的字符串写入 console.log 或调用 alert(),这样您就可以看到 JavaScript 如何解释您的字符串。

关于JavaScript 打断文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11357172/

相关文章:

javascript - 如何根据复选框数据属性值创建动态数组

php - 具有多个选择选项的 MySQL 查询

html - 如何只允许选中一个单选按钮?

c# - Javascript/.NET 正则表达式

javascript - JavaScript RegExp 隐式方法是否已弃用?

javascript - 嵌套的 React/Relay 组件没有收到 Prop

javascript - 如何在nodejs中将数字格式化为指定长度

html - 粘性页脚属性不兼容移动设备

c# - 使用正则表达式获取文件名的中间部分

javascript - 如何给antd charts treemap自定义颜色