Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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
Php 如何使多个表单更可靠?_Php_Javascript_Jquery_Forms_Design Patterns - Fatal编程技术网

Php 如何使多个表单更可靠?

Php 如何使多个表单更可靠?,php,javascript,jquery,forms,design-patterns,Php,Javascript,Jquery,Forms,Design Patterns,我正在寻找一个整洁的解决方案的多种形式 请看示例屏幕截图: 下拉列表中有三个网络,AT&T、Verizon Wireless和T-Mobile 我从下拉列表中选择了“AT&T”,然后出现了“销售类型”收音机。 T-Mobile网络的销售类型可能与“AT&T”网络相同,但有两种额外的销售类型 所有销售类型中的大多数文本框都是相同的。例如: 消费者将有20个字段,业务将有27个字段(附加字段)。仅Sim卡将有更少的字段-15个字段(一些已删除的字段和新字段) 什么是一个好的解决方案实现像这样和干燥

我正在寻找一个整洁的解决方案的多种形式

请看示例屏幕截图:

下拉列表中有三个网络,AT&T、Verizon Wireless和T-Mobile

我从下拉列表中选择了“AT&T”,然后出现了“销售类型”收音机。 T-Mobile网络的销售类型可能与“AT&T”网络相同,但有两种额外的销售类型

所有销售类型中的大多数文本框都是相同的。例如:

消费者将有20个字段,业务将有27个字段(附加字段)。仅Sim卡将有更少的字段-15个字段(一些已删除的字段和新字段)

什么是一个好的解决方案实现像这样和干燥的原则

我将jQuery与许多$('.name').hide()一起使用$('.name').hide()但它会变得非常混乱。例如:

$(".at&t_consumer_radio").click(function(){
       showSaleType("at&t_consumer");
});

function showSaleType(type) {
        if (type == "at&t_consumer") { 
          $('.name').hide(); 
          $('.name').hide(); and so on..
     } 
}
在完成表单时,我使用PHP对其进行验证

这是小提琴:

最好创建以下类标记:

.att、.verizon、。tmobile、.consumer、.business、.sim卡

然后,您可以根据需要隐藏字段的时间对字段进行标记。如果一个字段用于verison,那么它将得到一个verizon类。如果一个字段是business类型,那么它将得到business类。还可以将“hide”类添加到任何不总是显示的字段中

Some Field:
<input type="text" class=" hide verizon att consumer" />

Another Field
<input type="text" class = " hide att business" />
给你。任何时候选择一个新选项时,所有不属于表单的字段都将被隐藏,然后显示与您的承运商和销售类型匹配的字段。这种情况几乎会立即发生,用户无法区分不同的情况。你可以做一些褪色,使它看起来更平滑,如果你想。另外,如果一个字段对verizon和att都可见,那么只需将这两个类添加到该输入中即可。如果你有任何问题,请告诉我


我会试着弄一把小提琴,准确地显示如何操作。

隐藏所有只显示用于特定选择的字段,例如商务或sim免费

像这样

<input type="text" class="standard" />
<input type="text" class="business" style="display:none" />
<input type="text" class="simOnly" style="display:none" />
<input type="text" class="standard" />
<input type="text" class="business simOnly" style="display:none" />

这样,您就不会显示和隐藏所有内容,只显示特定于每种销售类型的输入

为什么有多个$('.name').hide();电话?一个调用将隐藏一个类为“name”的所有元素。@mattmore就像我说的每个销售类型的大多数字段都是相同的。我不想隐藏所有字段。我正在寻找干燥原理的解决方案。将来可能会扩展更多的字段和销售类型。很抱歉,您不够具体。用你的html代码和所有的JS更新你的问题,这样我们就可以更好地处理你想要的东西。我为你准备了一个解决方案,我正在编写它。和我的想法类似,你只是花了更多的精力来解释它。我试图精确地解释它,但失败了:(.呃,有很多东西要解释。你把我的想法准确地说出来了。似乎是用干燥原理来做这件事的唯一方法。这真是个好主意,谢谢你!我很理解你的概念。有一个问题..比如说在提交表格后,出现了一个错误(验证)..然后它将返回/重定向回表单页面,但这次将选择您之前选择的承运商和销售类型..如果这对您有效,请接受答案。若要解决验证问题,请在使用jquery提交表单之前验证表单..如果表单未验证,请停止表单提交。您的值将保留。这有意义吗?对不起,我的意思是“这次不会被选中”。不过我会使用PHP验证
//selectId is the ID of your select 
// myform is the id of your form



$(".option").change(function()
{   
     // get the value of our select and option
     carrier =  $('#selectId option:selected').val();
     sale_type = $('input[name=sale_type]:checked').val();

    // Hide all fields that don't always show up.
     $(".hide").hide();

    //Show all fields that match our carrier and sale type

    $(".hide").each(function(){
        if($(this).hasClass(carrier) && $(this).hasClass(sale_type))
        {            
            $(this).show();
        }    
    });
});
<input type="text" class="standard" />
<input type="text" class="business" style="display:none" />
<input type="text" class="simOnly" style="display:none" />
<input type="text" class="standard" />
<input type="text" class="business simOnly" style="display:none" />
$("#businessRadio").click(function(){          
    $('.business').show();   
});