Javascript 如何基于下拉列表更改TextArea验证
我需要根据以下场景对TextArea执行验证:Javascript 如何基于下拉列表更改TextArea验证,javascript,html,jquery,validation,Javascript,Html,Jquery,Validation,我需要根据以下场景对TextArea执行验证: 如果在下拉列表中选择了Mobile,则只允许在文本区域中输入数字 如果在下拉列表中选择了电子邮件,我们可以在文本区域中输入任何字符 下面是我实现上述场景的代码。我已经根据文本区域的类名执行了验证。当我更改下拉列表值时,我正在更改文本区域的类名 <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
function changeNotifyTypeValue(textboxControl)
{
textboxControl.value="";
if (textboxControl.className=="mobileValidation")
textboxControl.className="emailValidation";
else
textboxControl.className="mobileValidation";
}
$(function() {
$('.numberValidation').keyup(function() {
this.value = this.value.replace(/[^0-9,][.]?/g, '');
});
$('.emailValidation').keyup(function() {
//email validation
});
});
</script>
</head>
<body>
<table border="1" class="display"
id="NotificationTable">
<thead>
<tr style="background: #0086cd; color: #fff;">
<th>Update NotifyType</th>
<th>Update Address</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<select
id="notifyTypeID0"
class="form-control" name="notifyType0" onchange="changeNotifyTypeValue(updateAddress0)" >
<option selected value=EMAIL>EMAIL</option>
<option value="mobile">Mobile</option>
</select>
</td>
<td>
<textarea name="address0" id="updateAddress0"
class="emailValidation">abc@gmail.com</textarea>
</td>
</tr>
<tr>
<td>
<select id="notifyTypeID1" class="form-control" name="notifyType1" onchange="changeNotifyTypeValue(updateAddress1)" >
<option value="EMAIL">EMAIL</option>
<option selected value="mobile">Mobile</option>
</select>
</td>
<td> <textarea name="address1" id="updateAddress1" class="numberValidation">9999999999</textarea> </td>
</tr>
</tbody>
</table>
</body>
</html>
函数changeNotifyTypeValue(textboxControl)
{
textboxControl.value=“”;
if(textboxControl.className==“mobileValidation”)
textboxControl.className=“emailValidation”;
其他的
textboxControl.className=“mobileValidation”;
}
$(函数(){
$('.numberValidation').keyup(函数(){
this.value=this.value.replace(/[^0-9,][.]?/g');
});
$('.emailValidation').keyup(函数(){
//电子邮件验证
});
});
更新通知类型
更新地址
电子邮件
可移动的
abc@gmail.com
电子邮件
可移动的
9999999999
这是我的疑问
我可以看穿inspect元素,当我更改下拉列表值时,文本区域的类名在运行时被更改。但是,仍然在基于文本区域的旧类名执行验证。代码被javascript和jQuery弄乱了。我只提供javascript解决方案。而且类也不匹配(mobileValidation和numberValidation) 下面是正在运行的代码。您可以运行代码段并进行检查
函数changeNotifyTypeValue(textboxControl){
textboxControl.value='';
如果(textboxControl.className==“mobileValidation”)
textboxControl.className=“emailValidation”;
其他的
textboxControl.className=“移动增值”;
}
函数验证(textboxControl){
log(textboxControl.className);
if(textboxControl.className==“emailValidation”){
console.log(“电子邮件”);
}否则{
console.log('number');
textboxControl.value=textboxControl.value.replace(/[^0-9,][.]?/g');
}
}
更新通知类型
更新地址
电子邮件
可移动的
abc@gmail.com
电子邮件
可移动的
9999999999
您的
存在一些问题,您试图在jquery中使用纯javascript。
一旦尝试此脚本并检查
$(document).ready(function(){
$('textarea').keyup(function(){
if($(this).hasClass("mobileValidation")){
var cv = $(this).val();
$(this).val(cv.replace(/[^0-9,][.]?/g, ''));
} else if($(this).hasClass("emailValidation")){
//your email validation code;
}
});
});