Javascript 输入特定值时发出警报
如果用户输入了特定值(%或*),我想显示一条错误/警报消息。如果用户只输入%或*并点击“提交”,则警报或消息应显示“这是不允许的”。但是,应允许SM%TH或*MITH HTML 一如既往,我们将非常感谢您的帮助。试试以下方法:Javascript 输入特定值时发出警报,javascript,jquery,Javascript,Jquery,如果用户输入了特定值(%或*),我想显示一条错误/警报消息。如果用户只输入%或*并点击“提交”,则警报或消息应显示“这是不允许的”。但是,应允许SM%TH或*MITH HTML 一如既往,我们将非常感谢您的帮助。试试以下方法: function searchCheck(){ var answer = $.trim($(this).find('input[type=text]').val()); if(answer == '*' || answer == '%') alert(
function searchCheck(){
var answer = $.trim($(this).find('input[type=text]').val());
if(answer == '*' || answer == '%') alert('this is not allowed');
}
首先获取值。使用jQuery:
var str = $("#ANSWER.TTQ.MENSYS.3.").val();
使用KY而不使用jQuery:
var elem = document.getElementById("ANSWER.TTQ.MENSYS.3.");
var str = elem.value;
现在您只需查看:
str = str.trim();
if (str == "*" || str == "%") {
alert("This is not allowed. Get off my system!");
}
访问带有点(.)的ID时可能出现问题。为了避免这种情况,您必须以这种方式使用
$('#ANSWER\\.TTQ\\.MENSYS\\.3\\.')
function searchCheck(){
var answer = $.trim($('#ANSWER\\.TTQ\\.MENSYS\\.3\\.').val());
if(answer == '*' || answer == '%') alert('this is not allowed');
}
此处演示:在字符串上爬行,检查是否在*或%之前,并以**或%*而不是%%的后续操作停止
function searchCheck(){
var pos=0;
var error=false;
var prior=false;
while(pos<your_string.length && !error){
if(prior){
if(your_string.charAt(pos) == '*'){
error = true;
} else if(your_string.charAt(pos) != '%') prior = false;
} else {
if(your_string.charAt(pos) == '%' || your_string.charAt(pos) == '*')
prior = true;
}
pos++;
}
if(error || (your_string.length==1 && prior)){
alert("not allowed");
}
}
函数搜索检查(){
var-pos=0;
var错误=错误;
var-prior=false;
虽然(可能搜索正则表达式,看看它能做些什么——这和你得到的函数完全一样!你不应该在你的id名称中使用点,这只是使查询选择器中的事情复杂化并添加反斜杠。这是什么?填写代码?很好…答案。TTQ.MENSYS.3.不是一个有效的id。你不能在id或类中使用任何看起来很好的字符。y是什么你在这里使用的,在选择器中使用的,是指所有标签“应答”和类“TTQ”、“MENSYS”、“3”、”,这显然会导致错误。+1用于修剪。在我看到你使用它后编辑了我的答案以包括它。嗨!卡尔·安德烈·加农,恐怕它不起作用。无论如何,谢谢你。嗨!VeeKayBee..我昨天有这个,没有$(“#ANSWER\\.TTQ\\.MENSYS\\.3\\\”)。谢谢。此外,单击警报后,表单将被提交。返回false不会阻止它。@19egs很棒!!!。很高兴您找到了解决方案。很抱歉,我现在只看到了您的评论,很高兴您自己修复了它。:)@19蛋提到了这一点,但我认为有些浏览器可能不起作用。所以最好使用下划线(u)而不是点(.)嗨!雷南,我还没有试过你的代码,但我相信它会起作用,因为它与VeeKayBee的回复类似。谢谢。嗨!莱米,我决定使用VeeKayBee的答案,因为它比较短。但是谢谢你花时间回复。
function searchCheck(){
var answer = $.trim($('#ANSWER\\.TTQ\\.MENSYS\\.3\\.').val());
if(answer == '*' || answer == '%') alert('this is not allowed');
}
function searchCheck(){
var pos=0;
var error=false;
var prior=false;
while(pos<your_string.length && !error){
if(prior){
if(your_string.charAt(pos) == '*'){
error = true;
} else if(your_string.charAt(pos) != '%') prior = false;
} else {
if(your_string.charAt(pos) == '%' || your_string.charAt(pos) == '*')
prior = true;
}
pos++;
}
if(error || (your_string.length==1 && prior)){
alert("not allowed");
}
}