首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用选择名称数组提交之前检查jquery表单

使用选择名称数组提交之前检查jquery表单
EN

Stack Overflow用户
提问于 2014-06-23 15:46:52
回答 3查看 115关注 0票数 1

我很难在place...but中完成我想要的快速验证,我认为由于我选择的名称数组,它没有得到正确的验证,我也不知道该如何做。

它应该如何工作:-如果选中了当天的stat假日框&如果为当天选择了任何Lieu时间,请发出警告错误并停止表单提交。

我的小提琴:http://jsfiddle.net/4bgYj/3/

我的jquery:

代码语言:javascript
复制
$(document).ready(function() {

    $(document).on('submit', 'form', function(e) {

    var lieuhrs = $(".lieutimehours").val();

    $('.lieutimehours').each(function(i, obj) {
        if ($("#statholidaycheck").is(":checked") && lieuhrs > 0) {
            alert("cannot process: " + lieuhrs);
            return false;
        }
    }

    });
}); 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-23 16:02:07

让我为您的问题提供一个更方便用户的方法:

如果选择了stat,只需禁用lieu hours的表单输入即可。

这样,您就不必在提交表单之前检查任何内容,用户也不能意外地在lieu hours中选择一个值。

它仍然需要更新为您的标记,但基本思想是:

代码语言:javascript
复制
var stat = $('.stat');

stat.change(function() {
    var e = $(this);
    var f = e.parent().find('.lieu');

    if (e.is(':checked')) {
        f.prop('disabled', true);
    } else {
        f.prop('disabled', false);
    }
});

Demo

买前试一试

票数 2
EN

Stack Overflow用户

发布于 2014-06-23 15:54:56

首先,你错过了一个);.

代码语言:javascript
复制
        $(document).ready(function() {
        $(document).on('submit', 'form', function(e) {
            var lieuhrs = $(".lieutimehours").val();
            $('.lieutimehours').each(function(i, obj) {
                if ($("#statholidaycheck").is(":checked") && lieuhrs > 0) {
                    alert("cannot process: " + lieuhrs);
                    return false;
                }
            }); // missing ); here. <--------------
        });
    });

添加后尝试它,您会发现它适用于第一个复选框。但是选择一个不同的复选框,它就会失败。在HTML中,您将希望使用唯一的ids来引用元素。我要做的是修改HTML,在TR标记上放置一个css类,然后查看包含的元素。

代码语言:javascript
复制
<tr class='line'>
    <td> <input type='checkbox' class='isHoliday'/> </td>
    <td> <select class='lieuHours'>options...</select> </td>
</tr>

在你的剧本里..。

代码语言:javascript
复制
    $(document).ready(function() {
    $(document).on('submit', 'form', function(e) {
        $('.lines').each(function(i, obj) {
        var lieuHours = $(this).find(".lieuHours").val();
            if ($(this).find(".isHoliday:checked") && lieuHours > 0) {
                alert("cannot process: " + lieuhrs);
                return false;
            }
        }); // missing ); here. <--------------
    });
});
票数 0
EN

Stack Overflow用户

发布于 2014-06-23 15:59:15

您没有正确地处理这个问题,选择器不应该是全局的,而是特定于您正在执行的循环:

代码语言:javascript
复制
$(document).ready(function() {

    $(document).on('submit', 'form', function(e) {

    $('.lieutimehours').each(function(i, obj) {
        var lieuhrs = $(this).val();
        if ($(this).closest('tr').find('#statholidaycheck').is(":checked") && parseFloat(lieuhrs) > 0) {
            alert('works');
            return false;
        }else{
            alert('fail')
        }
    });

    });
}); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24370081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档