Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于下拉列表更改TextArea验证_Javascript_Html_Jquery_Validation - Fatal编程技术网

Javascript 如何基于下拉列表更改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.

我需要根据以下场景对TextArea执行验证:

  • 如果在下拉列表中选择了Mobile,则只允许在文本区域中输入数字
  • 如果在下拉列表中选择了电子邮件,我们可以在文本区域中输入任何字符
  • 下面是我实现上述场景的代码。我已经根据文本区域的类名执行了验证。当我更改下拉列表值时,我正在更改文本区域的类名

    <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;
                }
            });
        });