我正在使用jquery通过使用以下代码来限制语言,当我们输入非英语语言时,我无法显示警告消息。任何人都可以帮助解决此问题......
<apex:page controller="testcontroller">
<head>
<apex:includeScript value="{!URLFOR($Resource.Jquery)}" />
<script type="text/javascript">
$(document).ready(function() {
$('#Demo').bind('keyup blur', function() {
$(this).val($(this).val().replace(/[^A-Za-z $]/g, ''))
var regex = new RegExp("[^a-zA-Z]+$");
if(!$(this).value().match(regex)){
alert('Invalid Character usage. Please Use English characters only.');
return false;
}
});
});
</script>
</head>
<apex:form lang="en">
<input Type="Text" id="Demo"/>
</apex:form>
答案 0 :(得分:1)
您在以下行中出错:
if(!$(this).value().match(regex)){
使用.val()
代替.value()
答案 1 :(得分:0)
我认为你的逻辑不太正确。这一行
$(this).val($(this).val().replace(/[^A-Za-z $]/g, ''))
将用&#39;&#39;替换所有非拉丁字符。 (即没有人物)。但是,您在 之前 执行此操作并尝试提醒用户。
然后这一行
var regex = new RegExp("[^a-zA-Z]+$");
应该匹配我认为的整个单词中的非拉丁字符,但只有在单词结尾之前有一个非拉丁字符时才会匹配(由$符号表示)。但是,它永远不会匹配,因为您已经删除了所有非拉丁字符。
我认为您最好尝试以下方法,我假设您的目的是提醒字符串,然后删除无效字符:
$(document).ready(function() {
$('#Demo').bind('keyup blur', function() {
if($(this).val().match(/[^A-Za-z ]/g)){
// Pop alert
alert('Invalid Character usage. Please Use English characters only.');
//Replace all the invalid characters with empty string
$(this).val($(this).val().replace(/[^A-Za-z ]/g, ''))
return false;
}
});
});
关于JS小提琴的例子:http://jsfiddle.net/ozeu91yg/6/你可能也想玩其他角色 - 例如我保留了你允许空格的原始形式的RegEx。你想也允许连字符吗?所有的空白?等等。四处游戏 - []括号内的任何内容都将被允许。
<强> 修改 强>
刚刚发现这也是一个重复的问题 - 请参阅JavaScript Regex (string should include only alpha, space, hyphen)例如......