javascript - 表单验证循环检查所有文本并选择非空

标签 javascript

function validatForm(){
    $("#add_form input[type=text]").each(function() {
       if(this.value == null || this.value == '') {
            $(this).addClass("alert_focus");
            alert('Required Field Cannot Be Emmpty')
            $("html, body").animate({ scrollTop: $(this).offset().top }, 500);
        }
    });


<form id="add_form">
<table>
    <tr>
      <th>Select*</th>
      <th>Field A*</th>
      <th>Field B*</th>
      <th>Field C*</th>
    <tr>
    </tr>
      <td><select class="select" name="select1">
          <option value="" selected>Please Select</option>
          <option value="1">Option 1</option>
          <option value="2">Option 2</option>
      </td>
      <td><input type="text" name="a_field1" /></td>
      <td><input type="text" name="b_field1" /></td>
      <td><input type="text" name="c_field1" /></td>
    </tr>
    <tr>
      <td><select class="select" name="select2">
          <option>Please Select</option>
          <option value="1">Option 1</option>
          <option value="2">Option 2</option>
      </td>
      <td><input type="text" name="a_field2" /></td>
      <td><input type="text" name="b_field2" /></td>
      <td><input type="text" name="c_field2" /></td>
    </tr>
    <tr>
      <td><select class="select" name="select3">
          <option>Please Select</option>
          <option value="1">Option 1</option>
          <option value="2">Option 2</option>
      </td>
      <td><input type="text" name="a_field3" /></td>
      <td><input type="text" name="b_field3" /></td>
      <td><input type="text" name="c_field3" /></td>
    </tr>
    ............ and so on.
</table>
<a href="javascript:void(0);" onclick="return validatForm()">Submit</a>
<input type="hidden" value="submit" value="submit" />
</form>

到目前为止,上述内容对于 input[type="text"] 效果很好。 无论如何,我可以检查任何选择是否为空/not_selected 并识别该元素吗?

我已经尝试过:

$(".select").each(function() {
if (!$(".select option:selected").length) {
    alert('Required Field Cannot Be Emmpty')
    $("html, body").animate({ scrollTop: $(this).offset().top }, 500);
}
});
return false;

但似乎不起作用。 感谢您的帮助:) 非常感谢

在 RobG 的帮助下,以下是有效的脚本:

<script>
function validatForm(){
    $("#add_cat input[type=text]").each(function() {
        if(!this.value) {
            $(this).addClass("alert_focus");
            alert('Required Field Cannot Be Emmpty');
            $("html, body").animate({ scrollTop: $(this).offset().top }, 500);    
        }
    });
    $('#add_cat select').each(function(i, select){
        if (select.selectedIndex <= 0) {
            alert('Please select an option');
        }
    return false;
    });
};
</script>

最佳答案

如果要迭代选择元素,选择器为:'select'

jQuery 的 each与内置 Array forEach 方法不同,参数是 indexelement 而不是 element、< em>索引,这可能是预期的。

您可以将选择的值与“”(空字符串)进行比较,但是由于几乎所有浏览器都会默认选择第一个选项,因此更好的策略是将第一个选项设置为默认选择并检查,例如

<select name="...">
  <option value="" selected>Select one
  <option value="one">one
</select>

然后:

$('select').each(function(i, select){
  if (select.selectedIndex <= 0) {
    alert('Please select an option');
  }
});

如果未选择任何选项,所选索引将为 -1,这种情况不会经常发生,但需要适应。

关于javascript - 表单验证循环检查所有文本并选择非空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659002/

相关文章:

javascript - 我的 HTML 文件不会链接到我的 Javascript 文件

javascript - 从 Unity webGL 应用程序导出网格并将其与 AR.js 制作者关联

javascript - 超过最大缩放后的angularjs谷歌地图缩放 map

javascript - 为什么 textarea 的 .focus() 和 .blur() 不起作用

java - HTML 5 存储应用程序缓存 list 文件位置

javascript - 嵌套指令链接函数未调用, Controller 未确认

javascript - 使用尾声,是否可以在没有关联的情况下取回资源?

javascript - 从 Flowplayer 输出当前剪辑文件名或 URL

javascript - 如何使用正则表达式前瞻并匹配先前的字符串/字符类

javascript - knockout.js 中的多个过滤器