Php 如何使多个表单更可靠?
我正在寻找一个整洁的解决方案的多种形式 请看示例屏幕截图: 下拉列表中有三个网络,AT&T、Verizon Wireless和T-Mobile 我从下拉列表中选择了“AT&T”,然后出现了“销售类型”收音机。 T-Mobile网络的销售类型可能与“AT&T”网络相同,但有两种额外的销售类型 所有销售类型中的大多数文本框都是相同的。例如: 消费者将有20个字段,业务将有27个字段(附加字段)。仅Sim卡将有更少的字段-15个字段(一些已删除的字段和新字段) 什么是一个好的解决方案实现像这样和干燥的原则 我将jQuery与许多$('.name').hide()一起使用$('.name').hide()但它会变得非常混乱。例如: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_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();
});