jQuery如果只有2个输入& 1选择是设置还是更新?

时间:2015-12-23 14:19:27

标签: javascript php jquery css

我尝试仅在3个输入(2个输入,1个选择下拉菜单)设置了特定值时才调用函数。表格包含多个输入,选择&复选框。在发送表单之前执行此调用。

  • 第一个输入是选择/下拉菜单。

  • 第二个是标准输入,只有当它至少有1个数字(最多没有限制),一个点然后是1个数字时才应该检查。样本:19212.6

  • 第三个是隐藏输入,其值应大于1.

我知道jQuery中的.change函数可以帮助我,但我不知道如何正确调整它以适应我的设置。最重要的是,如果输入与上面提到的过滤器匹配,那么它应该在MsSQL查询(PHP)之后运行。

$('input').change(function(){
}

代码与PHP混合 目前,我已经创建了3个更改(每个输入/选择1个),它们调用一个函数并检查所有值是否合规。 它更好,更好吗?干净的方式来做到这一点?

部分代码:

<SCRIPT language="javascript">
$(document).ready(function () 
    $( ".gdctype" ).change(function() {
        var gdc = $(this).find('option:selected').text();
        if (gdc == "UK"){
            $('.ilsel').css({ 'display': 'none'});
            $('.casel').css({ 'display': 'none'});
            $('.bslsel').css({ 'display': 'none'});
            $('.rusel').css({ 'display': 'none'});
            $('.uspsel').css({ 'display': 'none'});
            $('.uksel').removeAttr('style');
        }
        if (gdc == "IL"){
            $('.uksel').css({ 'display': 'none'});
            $('.casel').css({ 'display': 'none'});
            $('.bslsel').css({ 'display': 'none'});
            $('.rusel').css({ 'display': 'none'});
            $('.uspsel').css({ 'display': 'none'});
            $('.ilsel').removeAttr('style');
        }
        if (gdc == "CA"){
            $('.uksel').css({ 'display': 'none'});
            $('.ilsel').css({ 'display': 'none'});
            $('.bslsel').css({ 'display': 'none'});
            $('.rusel').css({ 'display': 'none'});
            $('.uspsel').css({ 'display': 'none'});
            $('.casel').removeAttr('style');
        }
        if (gdc == "BSL"){
            $('.uksel').css({ 'display': 'none'});
            $('.ilsel').css({ 'display': 'none'});
            $('.casel').css({ 'display': 'none'});
            $('.rusel').css({ 'display': 'none'});
            $('.uspsel').css({ 'display': 'none'});
            $('.bslsel').removeAttr('style');
        }
        if (gdc == "RU"){
            $('.uksel').css({ 'display': 'none'});
            $('.ilsel').css({ 'display': 'none'});
            $('.casel').css({ 'display': 'none'});
            $('.bslsel').css({ 'display': 'none'});
            $('.uspsel').css({ 'display': 'none'});
            $('.rusel').removeAttr('style');
        }
        if (gdc == "US"){
            $('.uksel').css({ 'display': 'none'});
            $('.ilsel').css({ 'display': 'none'});
            $('.casel').css({ 'display': 'none'});
            $('.bslsel').css({ 'display': 'none'});
            $('.rusel').css({ 'display': 'none'});
            $('.uspsel').removeAttr('style');
        }
    });

        var uniquePUS = <?php if($uniquePUS!=NULL) echo $uniquePUS;?> <?php if($uniquePUS==NULL) echo "1";?>;
      $('.addPUS').click(function() {
        var copy = $('#PUS').clone(true,true);
        var formId = 'PUS' + window.uniquePUS;
        copy.attr('id', formId );
        copy.removeAttr('style');

        copy.find(':input#PUSAddress').each(function() {
            $(this).replaceWith("<input type='text' id='" + $(this).attr("id") + window.uniquePUS+"' id='" + $(this).attr("name") + window.uniquePUS+"' >");
        });

        copy.find(':input#PUSCity').each(function() {
            $(this).replaceWith("<input type='" + $(this).attr("type") + "' id='" + $(this).attr("id") + window.uniquePUS+"' name='" + $(this).attr("name") + window.uniquePUS + "' />");
        });

        copy.find(':input#PUSState').each(function() {
            $(this).replaceWith("<input type='" + $(this).attr("type") + "' id='" + $(this).attr("id") + window.uniquePUS+"' name='" + $(this).attr("name") + window.uniquePUS + "' size=2 />");
        });

        copy.find(':input#PUSZip').each(function() {
            $(this).replaceWith("<input type='" + $(this).attr("type") + "' id='" + $(this).attr("id") + window.uniquePUS+"' name='" + $(this).attr("name") + window.uniquePUS + "' size=4 />");
        });
        $('#uspselin').append(copy);
        window.uniquePUS++;  
        $('#main').find(':input#uniquePUS').each(function() {
            $(this).replaceWith("<input type='" + $(this).attr("type") + "' id='uniquePUS' name='" + $(this).attr("name") + "' value='"+window.uniquePUS+"' />");
        });

      });
    $('.delPUS').click(function() {
        $(this).closest("ul").remove();
    });  
        function chktrp(nr){
        if(nr != null && nr != undefined){
            var pattern = new RegExp(/^[0-9]+\.[0-9]+$/);
            return pattern.test(nr);    
        }
        else{
            return false;
        }

    }
    function chkfields(){
        if (
            $('select[name="gdctype"]').val() == 'US'
            &&
            $('input[name="uniquePUS"]').val() > '0'
            &&
            chktrp($('input[name="Trip"]').val())
        ) {
            return true;

      }else{
        return false;}
    }
    $('input[name="Trip"]').change(function(){
        if (chkfields()){
            alert('Works1');
        }
    });
    $('input[name="uniquePUS"]').change(function(){
        if (chkfields()){
            alert('Works2');
        }
    });
    $('select[name="gdctype"]').change(function(){
        if (chkfields()){
            alert('Works3');
        }
    });
});

如果相关,我可以添加HTML代码。

1 个答案:

答案 0 :(得分:0)

您可以像这样获取表单字段的值:

$('input[name="inputName"]').val()

您知道可以测试您的字段:

if (
    $('input[name="inputName"]').val() != ''
    &&
    $('input[name="inputName2"]').val() > 2
) {
    .... call your function
}